Як відключити autocmd або augroup in vim?


25

Враховуючи, у мене є група команд, таких як:

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

Я хочу на час відключити всі автокоманди в MyGroup, а потім знову ввімкнути його.

Чи можу я щось зробити з групою? Зокрема, чи є спосіб відключити всю групу відразу? Якщо ні, що я можу зробити, щоб відключити окремі команди?

Дивлячись на допомогу, я бачу лише кілька варіантів:

  • augroup!видалить усю групу: я не думаю, що це правильно, оскільки я хочу знову ввімкнути її. (Але, можливо, є спосіб знову легко визначити групу?)
  • :noautocmdвідключить зворотні дзвінки лише для одноразового виклику команди. (І вимикає всі autocmds, не вказані)
  • eventignore стосується прив'язки події, а не команди: це здається, що вона вимикає всі пов'язані команди для даної події, а не лише одну команду чи групу, яку я можу вказати.

Як це робиться?

Відповіді:


20

Від :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?


Дякую за вашу відповідь, але я вже читав це в документах. Я уточнив своє запитання, щоб (сподіваюся) показати, що я шукаю.
Ендрю Віт

8

З тут , здається , що це досягає цього:

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

...

:autocmd! Foo BufEnter *

1

Для тих, хто не має оригінальних вимог до плакатів щодо можливості відновлення augroup, :autocmd! <augroup name>- це команда просто видалити все autocmdв augroup, наприклад:

:autocmd! MyGroup
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.