Come condividere la configurazione tra Vim e Neovim


23

Ho iniziato a usare neovim e spostato il mio .vimrcper .config/nvim/init.vime altre cose si trova in .local/share/nvim.

Qual è il modo migliore per condividere config o persino plugin tra vim e Neovim? Link simbolici? Posso cambiare le directory in .vimrc per usare un solo link simbolico?

Dopo aver migrato la mia configurazione di VIM nella posizione predefinita di Neovim, questo sembra funzionare quasi:

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

Alcuni plugin (usando usando vim-plug ) non sembrano funzionare correttamente. Non riesco a caricare colori personalizzati né vim-compagnia aerea.


1
puoi usare if has('nvim')solo per i comandi
nvim

Risposte:


37

TL; DR

Puoi utilizzare i tuoi ~/.vimrcfile e plugin esistenti all'interno ~/.vimsenza dover ricollegare i file.

E questo è ora documentato nel manuale di NeoVim, vedi Transizione da Vim .


Le righe seguenti aggiungeranno i percorsi e i ~/.vimrcfile esistenti alla configurazione di nvim.

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

Per Linux e macOS, aggiungi semplicemente le righe sopra all'inizio ~/.config/nvim/init.vimo %LOCALAPPDATA%\nvim\init.vimper Windows.

Il merito va a questo

salute 🍻
Chris


8

Avendo la tua configurazione nella posizione predefinita di Neovim, procedi come segue:

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

Per correggere il metodo dei colori ho dovuto impostare la modalità colore terminale 256 , ovvero aggiungere questo al tuo file .vimrc (= init.vim), che verrà ignorato da nvim :

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

Per ottenere vim-Airline ho aggiunto il seguente frammento a .vimrc:

set laststatus=2

Io non capisco perché questo è necessario solo in vim e non in Neovim, ma io non sono l' unico un ostacolo su questa cosa.


1
Questo è sempre stato necessario in vim. Probabilmente nvim imposta questo come predefinito ed è per questo che funziona lì.
Christian Brabandt,

1
@ChristianBrabandt Sì, certo che sei proprio.
lumbric

Immagino che comunemente le persone si troveranno ~/.vimrcnella cartella home, come indica la riga precedente ~/.vim.
Konrad,

Meglio seguire l'altra risposta , in modo che si possa avere una configurazione specifica nvim, nel frattempo approvvigionamento ~/.vimrccome configurazione condivisa.
reno

Mentre Neovim ignora le t_xxopzioni, direi che è più corretto avvolgere qualcosa del genere con if !has('nvim'), come in questo esempio . Potrebbe ignorarli ora, ma cosa succederebbe se ciò cambiasse in futuro? Indica anche implicitamente che l'opzione è correlata solo a Vim.
ZeroKnight

5

È possibile utilizzare if has('nvim'). Ecco alcuni esempi completi:

Configurazione solo per Neovim:

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

Configurazione solo per Vim

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

1

Il metodo qui cerca di link simbolico ~/.config/nvima ~/.vim, e fare il conf compatibile con 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

Dopo questa configurazione, ~/.config/nvim/init.vimè il file reale utilizzato come conf. ~/.vim/vimrcè solo un link ad esso.

Ora dobbiamo creare il gestore dei plugin, i plugin, vimriutilizzando nvim, cambiando runtimepathe packpath. In effetti, i percorsi dei plug-in vengono riutilizzati automaticamente, la seguente correzione sta riutilizzando il gestore dei plug-in.

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

Fonte: condividi conf. Tra vim e nvim


1

Solo per aggiungere alla risposta di IPatch, che è la risposta corretta, se hai una configurazione leggermente diversa da Vim potresti dover adattare il percorso.

Ad esempio, su Windows, anziché utilizzare la configurazione predefinita con:

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

Sto usando:

$HOME
   +--vimfiles
          +--vimrc

(Il motivo è che è più facile mettere una singola directory sotto controllo di revisione rispetto a un file e una directory, in particolare quando il file si trova nella directory principale della home directory)

Quanto segue funziona per me quindi:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.