vim
автокоманда
Поиск…
замечания
Команды объемного 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