Wie lade ich mein vimrc neu, ohne Vim zu verlassen?

50

Wenn ich eine Änderung an meinem .vimrcvornehme, beende ich normalerweise Vim und öffne es erneut. Gibt es eine einfachere Möglichkeit, die neuen .vimrcÄnderungen neu zu laden ?

Thameera
quelle

Antworten:

47

Lauf:

:source $MYVIMRC

in Vim, um die vimrcDatei neu zu laden . Oder eine kürzere Version:

:so $MYVIMRC

wie in einem kommentar von kenorb erwähnt .

Es kann auch nützlich sein, eines dieser Formulare einem Schlüssel zuzuordnen. Zum Beispiel:

nnoremap <Leader>r :source $MYVIMRC<CR>
Paul Gessler
quelle
2
Abkürzung: :so $MYVIMRC.
Kenorb
@kenorb: Ich habe diese Möglichkeit hinzugefügt; Danke, dass du es erwähnt hast!
Paul Gessler
:so $m<Tab> ← Extra-Shortcut
Aaron Thoma
3
Speichern Sie zwei weitere Tastatureingaben mit :so %. %wird auf den aktuellen Dateinamen des Puffers gesetzt, den Sie bearbeiten, in diesem Fall$MYVIMRC
cbaumhardt
1
Der einfachste Weg, dies zu tun, besteht darin, den vimrc beim Speichern automatisch neu zu laden - überprüfen Sie die anderen Antworten.
Tom Hale
20

Wenn Sie die Datei nur gelegentlich neu laden möchten

:source $MYVIMRC

wie Paulus schrieb, ist richtig. Wenn Sie Ihren vimrc öfter ändern, können Sie Ihrer vimrc-Datei Folgendes hinzufügen:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

Dadurch wird die Datei beim Schreiben neu geladen (aus dieser VIM-Sitzung heraus).

johannes
quelle
1
johannes: Müssen wir die .vimrc durch vim bearbeiten, damit dieser Befehl die Datei automatisch erzeugt?
Sai Manoj Kumar Yadlapati
5
Beachten Sie, dass eine vimrc-Datei auch andere Namen haben kann: zum Beispiel vimrc (wenn es sich um ~ / .vim handelt).
user50136
1
@SaiManojKumarYadlapati Ja, AS sagte, dass dies die gleiche Sitzung sein muss. Bufwritepost wird ausgelöst wenn vom schreibt
johannes
Probleme damit: (1) funktioniert nicht mit .vim/vimrc, (2) erzeugt doppelte autocmds, so dass jedes nachfolgende Speichern langsamer ist, da die Datei mehrmals neu geladen wird, (3) verhält sich nicht mit vim-tiny, was nicht der Fall ist Habe autocmd und ist immer noch der Standard bei einigen Linux-Distributionen. Siehe meine Antwort, um diese Probleme anzugehen.
Tom Hale
2
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

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