So teilen Sie die Konfiguration zwischen vim und Neovim


23

Ich begann neovim mit und zog meine .vimrczu .config/nvim/init.vimund anderes Material befindet sich in .local/share/nvim.

Was ist der beste Weg, um Configs oder sogar Plugins zwischen vim und Neovim zu teilen? Symlinks? Kann ich die Verzeichnisse in der .vimrc so ändern, dass nur ein Symlink verwendet wird?

Nach der Migration meiner vim-Konfiguration auf den Standardspeicherort von Neovim scheint dies fast zu funktionieren:

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

Einige Plugins (mit vim-plug ) scheinen nicht richtig zu funktionieren. Ich kann weder custom colorschmes noch vim-airline laden.


1
Sie können if has('nvim')nur für NVIM-Befehle verwenden
Wizzup

Antworten:


37

TL; DR

Sie können Ihre vorhandenen ~/.vimrcDateien und Plugins verwenden, ~/.vimohne die Dateien zu verknüpfen.

Und dies ist jetzt im NeoVim-Handbuch dokumentiert, siehe Übergang von Vim .


In den folgenden Zeilen werden die vorhandenen Pfade und ~/.vimrcDateien zu Ihrem nvim-Setup hinzugefügt.

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

Fügen Sie unter Linux und MacOS die obigen Zeilen ganz oben in Ihr ~/.config/nvim/init.vimoder %LOCALAPPDATA%\nvim\init.vimin Windows ein.

Gutschrift geht zu 👉 dieses

Prost 🍻
Chris


8

Wenn Sie Ihre Konfiguration im Standardverzeichnis von Neovim haben, gehen Sie wie folgt vor:

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

Um das Farbschema zu korrigieren, musste ich den 256-Terminal-Farbmodus einstellen , dh dies zu Ihrer .vimrc-Datei (= init.vim) hinzufügen, die von nvim ignoriert wird :

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

Um vim-airline zu erhalten, habe ich das folgende Snippet zu .vimrc hinzugefügt:

set laststatus=2

Ich verstehe nicht ganz , warum dies nur in vim notwendig ist und nicht in Neovim, aber ich bin nicht der einzige ein Stolpern über diese Sache.


1
Dies war immer in vim notwendig. Wahrscheinlich setzt nvim dies als Standard und deshalb funktioniert es dort.
Christian Brabandt

1
@ChristianBrabandt ja, natürlich Sie sind recht.
Lumbric

Ich gehe davon aus, dass ~/.vimrcsich in der Regel Personen im Home-Ordner befinden, auf die die vorherige Zeile verweist ~/.vim.
Konrad

Es ist besser, der anderen Antwort zu folgen , damit man eine nvim-spezifische Konfiguration haben kann, während man diese ~/.vimrcals gemeinsam genutzte Konfiguration bezieht .
Ryenus

Während Neovim t_xxOptionen ignoriert , würde ich argumentieren, dass es richtiger ist, so etwas wie das if !has('nvim')in diesem Beispiel zu verpacken . Es mag sie jetzt ignorieren, aber was ist, wenn sich das in Zukunft ändert? Implizit bedeutet dies auch, dass die Option nur mit Vim zusammenhängt.
ZeroKnight

5

Sie können verwenden if has('nvim'). Hier sind vollständige Beispiele:

Konfiguration nur für Neovim:

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

Konfiguration nur für Vim

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

1

Die hier beschriebene Methode versucht, eine Verknüpfung ~/.config/nvimmit ~/.vimder conf herzustellen und diese kompatibel zu machen 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

Nach diesem Setup ~/.config/nvim/init.vimwird die echte Datei als conf verwendet. ~/.vim/vimrcist nur ein Link dazu.

Jetzt müssen wir den Plugin-Manager von vimReuse nvim, Plugins, durch Ändern von runtimepathund ändern packpath. Tatsächlich werden die Plugin-Pfade automatisch wiederverwendet. Die folgende Korrektur verwendet den Plugin-Manager erneut.

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

Quelle: Teilen Sie Confs zwischen VIM und NVIM


1

Nur um ipatch answer zu ergänzen, das ist die richtige Antwort. Wenn Sie ein etwas anderes Setup als Vim haben, müssen Sie möglicherweise den Pfad anpassen.

Zum Beispiel unter Windows, anstatt die Standardkonfiguration zu verwenden mit:

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

Ich benutze:

$HOME
   +--vimfiles
          +--vimrc

(Der Grund dafür ist, dass es einfacher ist, ein einzelnes Verzeichnis der Revisionskontrolle zu unterwerfen als eine Datei und ein Verzeichnis, insbesondere wenn sich die Datei im Stammverzeichnis Ihres Basisverzeichnisses befindet.)

Für mich funktioniert dann:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.