Отключение autocmd для специальных окон
Как отключить autocmd для входа / выхода из окон, например ":help", ":NERDTree" или ":TlistOpen"?
Прямо сейчас я изменяю "eventignore" до и после вызова этих команд (кроме ": help", я пока не знаю, как это сделать), но я не могу найти способ сделать это, перемещаясь с "CTRL". -w ", и в результате мой autocmd срабатывает при каждом входе и выходе из этих окон.
Я думаю, что у этих окон есть что-то общее: они доступны только для чтения или имеют ограничения на действия, которые я могу выполнять. Если я смогу получить эту информацию, я, вероятно, смогу поставить оператор if вокруг моего autocmd.
1 ответ
Сначала установите некоторые локальные переменные буфера:
augroup MyAutocommands
au!
au BufNewFile,BufRead * let b:my_autocommands = DoMyAutocommands()
" other autocommands
augroup END
Создать DoMyAutocommands
функция. Для начинающих,
function! DoMyAutocommands()
if @buftype == 'help'
return 1
endif
" other conditions ...
return 0
endfun
Затем каждая из ваших автокоманд или вызываемые ими функции могут проверить exists('b:my_autocommands') && b:my_autocommands
,