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

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

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

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

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

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

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

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

11
задан Dave M
14.04.2023 16:28 Количество просмотров материала 3652
Распечатать страницу

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 2023-04-16 00:16

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

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

...

:autocmd! Foo BufEnter *
8
отвечен ivotron 2023-04-16 02:33

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх