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?

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


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.


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 .


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>     
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.