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 wie vim-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