Zoeken…


Opmerkingen

Surround autocmd opdrachten

autocmd is een additieve opdracht en u wilt dit gedrag waarschijnlijk standaard niet.

Als u bijvoorbeeld uw .vimrc een paar keer opnieuw gebruikt tijdens het bewerken, kan vim langzamer werken.

Hier is het bewijs:

:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save

Als u nu typt :autocmd BufWritePost * , ziet u beide regels in de uitvoer, niet slechts één. Beide worden geëxecuteerd.

Om dit gedrag te voorkomen, omringt u al uw autocmd 's als volgt:

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

Bron .vimrc automatisch na opslaan

Voeg dit toe aan uw $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

Kenmerken:

  • echom vertelt de gebruiker wat er is gebeurd (en meldt zich ook aan bij :messages ).
  • $MYVIMRC en $MYGVIMRC verwerken platformspecifieke namen voor de configuratiebestanden,
  • en komen alleen overeen met de daadwerkelijke configuratiebestanden (kopieën in andere mappen negeren of een fugitive:// diff)
  • has() zal een fout voorkomen bij gebruik van incompatibele versies, zoals vim-tiny .
  • autocmd! vermijdt het opbouwen van meerdere identieke autocommands als dit bestand opnieuw wordt ingekocht. (Het wist alle opdrachten in de genoemde groep, dus de groepsnaam is belangrijk.)

Vernieuw vimdiff-weergaven als een bestand in een ander venster wordt opgeslagen

:autocmd BufWritePost * if &diff | diffupdate | endif 


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow