Wie deaktiviere ich autocmd oder augroup in vim?

25

Dazu habe ich eine Gruppe von Befehlen wie:

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

Ich möchte alle automatischen Befehle in MyGroup für einige Zeit deaktivieren und später wieder aktivieren.

Kann ich mit der Gruppe etwas anfangen? Gibt es eine Möglichkeit, die gesamte Gruppe auf einmal zu deaktivieren? Wenn nicht, was kann ich tun, um einzelne Befehle zu deaktivieren?

In der Hilfe sehe ich nur einige Optionen:

  • augroup!löscht die gesamte Gruppe: Ich glaube nicht, dass dies richtig ist, da ich sie wieder aktivieren möchte. (Aber vielleicht gibt es eine Möglichkeit, die Gruppe einfach wieder neu zu definieren?)
  • :noautocmdDeaktiviert die Rückrufe nur für einen einmaligen Aufruf eines Befehls. (Und es deaktiviert alle autocmds, nicht angegeben)
  • eventignore Adressiert die Ereignisbindung, nicht den Befehl: Es hört sich so an, als ob alle gebundenen Befehle für ein bestimmtes Ereignis deaktiviert werden, nicht nur ein Befehl oder eine Gruppe, die ich angeben kann.

Wie geht das?

Andrew Vit
quelle

Antworten:

20

Von :help autocmd:

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

Von :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.

Es scheint :noautocmdalso das zu sein, wonach Sie suchen.

In welchem ​​Kontext möchten Sie ein deaktivieren augroup?

romainl
quelle
Vielen Dank für Ihre Antwort, aber ich habe dies bereits in den Dokumenten gelesen. Ich habe meine Frage geklärt, um (hoffentlich) zu zeigen, wonach ich suche.
Andrew Vit
8

Von hier aus scheint es, dass dies erreicht wird:

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

...

:autocmd! Foo BufEnter *
Ivotron
quelle
1

Für alle, die nicht die ursprünglichen Poster-Voraussetzungen haben, um das wiederherstellen zu können augroup, :autocmd! <augroup name>ist der Befehl einfach alles autocmdin einem zu löschen augroup, zB:

:autocmd! MyGroup
robenkleene
quelle