vim
autocommands
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, zoalsvim-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