Как отключить autocmd или augroup в vim?

Учитывая, у меня есть группа команд, таких как:

augroup MyGroup
  autocmd CursorMoved * silent call MyCommandOne()
augroup END

Я хочу отключить все автокоманды в MyGroup на время, а затем повторно включить его позже.

могу ли я что-нибудь сделать с группой? В частности, есть ли способ отключить всю группу сразу? Если нет, то что я могу сделать, чтобы отключить отдельные команды?

глядя на помощь, я вижу только несколько вариантов:

  • augroup! удалит всю группу: я не думаю, что это правильно, так как я хочу снова включить его. (Но, может быть, есть способ легко переопределить группу снова?)
  • :noautocmd отключает обратные вызовы только для одноразового вызова команды. (И он отключает все autocmds, не указанные)
  • eventignore обращается к привязке события, а не к команде: похоже, что она отключает все связанные команды для данного события, а не только одну команду или группу, которую я могу указать.

как это готово?

18
vim
задан Dave M 2012-06-20 06:51:31
источник

2 ответов

С :help autocmd:

If you want to skip autocommands for one command, use the :noautocmd command
modifier or the 'eventignore' option.

С :help :noautocmd:

To disable autocommands for just one command use the ":noautocmd" command
modifier.  This will set 'eventignore' to "all" for the duration of the
following command.  Example:

    :noautocmd w fname.gz

This will write the file without triggering the autocommands defined by the
gzip plugin.

получается :noautocmd это то, что вы ищете.

в каком контексте вы хотите отключить augroup?

14
отвечен romainl 2012-06-20 11:33:41
источник

С здесь, кажется, этого и добивается:

:augroup Foo
:autocmd BufEnter * :echo "hello"
:augroup END

...

:autocmd! Foo BufEnter *
8
отвечен ivotron 2014-02-19 22:18:00
источник

Другие вопросы vim

X