Comment partager la configuration entre vim et Neovim


23

J'ai commencé à utiliser neovim et j'ai déplacé mon .vimrcvers .config/nvim/init.vimet d'autres choses se trouvent dans .local/share/nvim.

Quelle est la meilleure façon de partager des configurations ou même des plugins entre vim et Neovim? Liens symboliques? Puis-je changer les répertoires dans le .vimrc pour utiliser un seul lien symbolique?

Après avoir migré ma configuration vim vers l'emplacement par défaut de Neovim, cela semble fonctionner presque:

ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

Certains plugins (utilisant vim-plug ) ne semblent pas fonctionner correctement. Je ne peux pas charger de couleurs personnalisées ni vim-airlines.


1
vous pouvez utiliser if has('nvim')pour les commandes nvim uniquement
wizzup

Réponses:


37

TL; DR

Vous pouvez utiliser vos ~/.vimrcfichiers, plugins et plugins existants ~/.vimsans avoir à créer de lien symbolique entre les fichiers.

Et cela est maintenant documenté dans le manuel NeoVim, voir Transition de Vim .


Les lignes ci-dessous ajouteront les chemins et ~/.vimrcfichiers existants à votre configuration nvim.

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath=&runtimepath
source ~/.vimrc

Pour Linux et macOS, ajoutez simplement les lignes ci-dessus en haut de votre ~/.config/nvim/init.vim, ou %LOCALAPPDATA%\nvim\init.vimpour Windows.

Le mérite revient à 👉 ce

cheers 🍻
Chris


8

Après avoir configuré votre configuration dans l'emplacement par défaut de Neovim, procédez comme suit:

mkdir -p ~/.local/share/nvim/site
ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

Pour corriger le schéma de couleurs, j'ai dû définir le mode de couleur 256 terminaux , c'est-à-dire l'ajouter à votre fichier .vimrc (= init.vim), qui sera ignoré par nvim :

set t_Co=256  " Note: Neovim ignores t_Co and other terminal codes.

Pour obtenir vim-airlines, j'ai ajouté l'extrait suivant à .vimrc:

set laststatus=2

Je ne comprends pas pourquoi cela est nécessaire que dans vim et non en Neovim, mais je ne suis pas la seule un obstacle sur cette chose.


1
Cela a toujours été nécessaire à Vim. Nvim définit probablement cela par défaut et c'est pourquoi cela fonctionne là-bas.
Christian Brabandt

1
@ChristianBrabandt oui, bien sûr , vous êtes droit.
lumbric

Je pense que les gens se trouveront généralement ~/.vimrcdans le dossier d'accueil, comme l'indique la ligne précédente ~/.vim.
Konrad

Mieux vaut suivre l'autre réponse , afin que l'on puisse avoir une configuration spécifique à nvim, en attendant le sourcing en ~/.vimrctant que configuration partagée.
ryenus

Bien que Neovim ignore les t_xxoptions, je dirais qu'il est plus correct d'envelopper quelque chose comme ça if !has('nvim'), comme dans cet exemple . Il peut les ignorer maintenant, mais que se passe-t-il si cela change à l'avenir? Il indique également implicitement que l'option est liée à Vim uniquement.
ZeroKnight

5

Vous pouvez utiliser if has('nvim'). Voici des exemples complets:

Configuration uniquement pour Neovim:

if has('nvim')
        tnoremap <Esc> <C-\><C-n>
endif

Configuration uniquement pour Vim

if !has('nvim')
    set ttymouse=xterm2
endif

1

La méthode ici essaie de créer un lien symbolique ~/.config/nvimvers ~/.vim, et de rendre la conf compatible avec vim.

# nvim conf dir: ~/.config/nvim
# vim conf dir: ~/.vim
# link the 1st as the 2nd with relative links

# Prepare a vimrc file in ~/.config/nvim folder
ln -sf ./init.vim ~/.config/nvim/vimrc

# Link the whole ~/.config/nvim folder as ~/.vim foler
ln -sf ./.config/nvim ~/.vim

Après cette configuration, ~/.config/nvim/init.vimle vrai fichier est-il utilisé comme conf. ~/.vim/vimrcest juste un lien vers elle.

Maintenant, nous devons faire vimréutiliser nvimle gestionnaire de plugins, plugins, en changeant runtimepathet packpath. En fait, les chemins des plugins sont réutilisés automatiquement, le correctif suivant réutilise le gestionnaire de plugins.

let g:is_nvim = has('nvim')
let g:is_vim8 = v:version >= 800 ? 1 : 0

" Reuse nvim's runtimepath and packpath in vim
if !g:is_nvim && g:is_vim8
  set runtimepath-=~/.vim
    \ runtimepath^=~/.local/share/nvim/site runtimepath^=~/.vim 
    \ runtimepath-=~/.vim/after
    \ runtimepath+=~/.local/share/nvim/site/after runtimepath+=~/.vim/after
  let &packpath = &runtimepath
endif

Source: partage des confs entre vim et nvim


1

Juste pour ajouter à la réponse ipatch, qui est la bonne réponse, si vous avez une configuration légèrement différente de Vim, vous devrez peut-être adapter le chemin.

Par exemple, sous Windows, plutôt que d'utiliser la configuration par défaut avec:

$HOME
   +--.vimrc
   +--.vim

J'utilise:

$HOME
   +--vimfiles
          +--vimrc

(La raison en est qu'il est plus facile de placer un seul répertoire sous contrôle de révision qu'un fichier et un répertoire, en particulier lorsque le fichier est à la racine de votre répertoire personnel)

Le suivant fonctionne pour moi alors:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.