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