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

18

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

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

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

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

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

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

Как это сделать?

Andrew Vit
источник

Ответы:

14

От :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?

romainl
источник
Спасибо за ваш ответ, но я уже читал это в документации. Я уточнил свой вопрос, чтобы (надеюсь) показать, что я ищу.
Andrew Vit
8

От Вот Кажется, что это достигает этого:

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

...

:autocmd! Foo BufEnter *
ivotron
источник