vimでautocmdまたはaugroupを無効にする方法は?


25

次のようなコマンドのグループがあるとします。

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

MyGroupのすべてのオートコマンドを一時的に無効にしてから、後で再度有効にする必要があります。

グループでできることはありますか?具体的には、グループ全体を一度に無効にする方法はありますか?そうでない場合、個々のコマンドを無効にするにはどうすればよいですか?

ヘルプを見ると、いくつかのオプションしかありません。

  • augroup!グループ全体を削除します。再び有効にしたいので、これは正しいとは思いません。(ただし、グループを簡単に再定義する方法があるかもしれません。)
  • :noautocmdコマンドの1回限りの呼び出しのコールバックのみを無効にします。(そして、指定されたものではなく、すべての autocmdを無効にします)
  • eventignore コマンドではなく、イベントバインドに対処します。指定された1つのコマンドやグループだけでなく、特定のイベントのすべてのバインドされたコマンドを無効にするようです。

これはどのように行われますか?

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.