Отключение 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,

Другие вопросы по тегам