vim
autokommandon
Sök…
Anmärkningar
Surround autocmd
kommandon
autocmd
är ett additivt kommando, och du vill förmodligen inte ha detta beteende som standard.
Om du till exempel källkoder till .vimrc
några gånger medan du redigerar den, kan vim sakta ner.
Här är beviset:
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
Om du nu skriver :autocmd BufWritePost *
ser du båda linjerna i utgången, inte bara en. Båda avrättas.
Om du autocmd
undvika detta beteende omger du alla dina autocmd
er på följande sätt:
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
Källa automatiskt .vimrc efter att du har sparat
Lägg till detta till din $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
Funktioner:
-
echom
berättar för användaren vad som har hänt (och loggar också till:messages
). -
$MYVIMRC
och$MYGVIMRC
hanterar plattformspecifika namn för konfigurationsfilerna, - och matchar bara de faktiska konfigurationsfilerna (ignorerar kopior i andra kataloger, eller en
fugitive://
diff) -
has()
kommer att förhindra ett fel om du använder inkompatibla versioner, till exempelvim-tiny
. -
autocmd!
undviker uppbyggnad av flera identiska autokommandon om den här filen kommer igen. (Det rensar alla kommandon i den nämnda gruppen, så gruppnamnet är viktigt.)
Uppdatera vimdiff-vyer om en fil sparas i ett annat fönster
:autocmd BufWritePost * if &diff | diffupdate | endif
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow