vim
Autobefehle
Suche…
Bemerkungen
autocmd
Befehle
autocmd
ist ein additiver Befehl, und Sie möchten dieses Verhalten möglicherweise standardmäßig nicht.
Wenn Sie zum Beispiel während der Bearbeitung Ihre .vimrc
- .vimrc
erneut .vimrc
, kann sich vim verlangsamen.
Hier ist der Beweis:
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
Wenn Sie jetzt :autocmd BufWritePost *
, werden in der Ausgabe beide Zeilen :autocmd BufWritePost *
, nicht nur eine. Beide werden hingerichtet.
Um dieses Verhalten zu vermeiden, umgeben Sie alle autocmd
wie folgt:
if has ('autocmd') " Remain compatible with vi which doesn't have autocmd
augroup MyDiffUpdate " A unique name for the group. DO NOT use the same name twice!
autocmd! " Clears the old autocommands for this group name
autocmd BufWritePost * if &diff | diffupdate | endif " Update diff after save
" ... etc ...
augroup END
endif
Quelle automatisch .vimrc nach dem Speichern
Fügen Sie dies Ihrem $MYVIMRC
:
" Source vim configuration file whenever it is saved
if has ('autocmd') " Remain compatible with earlier versions
augroup Reload_Vimrc " Group name. Always use a unique name!
autocmd! " Clear any preexisting autocommands from this group
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
Eigenschaften:
-
echom
teilt dem Benutzer mit, was passiert ist (und meldet sich auch an:messages
). -
$MYVIMRC
und$MYGVIMRC
behandeln plattformspezifische Namen für die Konfigurationsdateien. - und stimmen nur mit den tatsächlichen Konfigurationsdateien überein (ignoriert Kopien in anderen Verzeichnissen oder ein
fugitive://
diff) -
has()
verhindert einen Fehler, wenn inkompatible Versionen wievim-tiny
. -
autocmd!
vermeidet den Aufbau mehrerer identischer Autobefehle, wenn diese Datei erneut beschafft wird. (Es löscht alle Befehle in der genannten Gruppe, daher ist der Gruppenname wichtig.)
Aktualisieren Sie die vimdiff-Ansichten, wenn eine Datei in einem anderen Fenster gespeichert wird
:autocmd BufWritePost * if &diff | diffupdate | endif
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow