Wie können Sie Ihre .vimrc-Datei neu laden, ohne vim neu zu starten?

534

Können Sie Ihre .vimrcDatei bearbeiten und neu laden, ohne Vim neu starten zu müssen?

ivo
quelle

Antworten:

661

Wenn Sie es bearbeiten, können Sie es erneut laden mit:

:so %

%steht für den aktuellen Dateinamen (siehe :h current-file) und :soist die Abkürzung für :source, die den Inhalt der angegebenen Datei liest und als Vim-Code behandelt.

Verwenden Sie zum erneuten Laden der derzeit aktiven .vimrc-Datei im Allgemeinen Folgendes (siehe Daily Vim ):

:so $MYVIMRC
Matteo Riva
quelle
2
Schauen Sie sich stackoverflow.com/questions/803464/…
mrucci
36
und :so ~/.vimrcsollte auch auf Unix funktionieren
Yab
3
: so ~ / _vimrc funktioniert unter Windows. Natürlich behalte ich mein _vimrc in meinem Windows Home-Verzeichnis, sonst funktioniert das nicht. Verwenden Sie, um zu sehen, was Vim als Ihr Ausgangsverzeichnis betrachtet :echo expand("~").
Daniel Miladinov
3
Beachten Sie, dass Tastaturzuordnungen, die bereits vorhanden waren, auch dann nicht gelöscht werden, wenn sie
Phani
Oder :so ~/.vim/gvimrcoder wo immer Sie es natürlich
sagen
79

Noch besser ist es, wenn Sie Vim so konfigurieren, dass es nach Änderungen in Ihrer Konfiguration sucht .vimrcund die Konfiguration automatisch neu lädt.

augroup myvimrc
    au!
    au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END

Quelle: Diese Antwort auf SO

Hinweis: Diese spezielle Methode sucht nach den vielen Variationen der Vim-Konfigurationsdateinamen, damit sie mit GUI Vim, Windows Vim usw. kompatibel sind.

Andrei
quelle
2
Wie performant ist diese Methode?
Alexej Magura
Bei Verwendung dieser Art von Befehlen bleibt mein nvim manchmal einige Sekunden oder länger hängen.
JDHAO
11

Tastenzuordnungen

" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

Komplett automatisierte Lösung

Um beim Speichern automatisch neu zu laden, fügen Sie Folgendes zu Ihrer hinzu $MYVIMRC:

if has ('autocmd') " Remain compatible with earlier versions
 augroup vimrc     " Source vim configuration upon save
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw
  augroup END
endif " has autocmd

und geben Sie dann zum letzten Mal Folgendes ein:

:so %

Wenn Sie das nächste Mal speichern vimrc, wird es automatisch neu geladen.

Eigenschaften:

  • Teilt dem Benutzer mit, was passiert ist (auch beim Einloggen :messages)
  • Behandelt verschiedene Namen für die Konfigurationsdateien
  • Stellt sicher, dass es nur mit der tatsächlichen Konfigurationsdatei übereinstimmt (ignoriert Kopien in anderen Verzeichnissen oder ein fugitive://Diff)
  • Bei Verwendung von wird kein Fehler generiert vim-tiny

Das automatische Neuladen findet natürlich nur statt, wenn Sie Ihr vimrcin vim bearbeiten .

Tom Hale
quelle
5

Eine Alternative zum Erinnern / Tippen :so $MYVIMRCsind diese Zuordnungen. Damit können Sie schnell vimrc ( ev) oder source vimrc ( sv) bearbeiten .

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
maged
quelle