Поиск…


замечания

Команды объемного autocmd

autocmd - это аддитивная команда, и вы, вероятно, не хотите этого поведения по умолчанию.

Например, если вы повторно используете свой .vimrc несколько раз при редактировании, vim может замедлить работу.

Вот доказательство:

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

Если вы сейчас :autocmd BufWritePost * , вы увидите обе строки на выходе, а не только одну. Оба исполняются.

Чтобы избежать такого поведения, autocmd все свои autocmd s следующим образом:

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

Автоматический источник .vimrc после сохранения

Добавьте это в свой $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

Особенности:

  • echom сообщает пользователю, что произошло (а также журналы :messages ).
  • $MYVIMRC и $MYGVIMRC обрабатывают специфичные для платформы имена файлов конфигурации,
  • и соответствуют только фактическим файлам конфигурации (игнорируя копии в других каталогах или fugitive:// diff)
  • has() предотвратит ошибку при использовании несовместимых версий, таких как vim-tiny .
  • autocmd! избегает наращивания нескольких идентичных автокоманд, если этот файл снова получен. (Он очищает все команды в названной группе, поэтому важно иметь название группы.)

Обновите представления vimdiff, если файл сохранен в другом окне

:autocmd BufWritePost * if &diff | diffupdate | endif 


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow