Comment désactiver autocmd ou augroup dans vim?


25

Étant donné que j'ai un groupe de commandes telles que:

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

Je veux désactiver toutes les commandes automatiques dans MyGroup pendant un certain temps, puis le réactiver plus tard.

Puis-je faire quelque chose avec le groupe? Plus précisément, existe-t-il un moyen de désactiver l'ensemble du groupe à la fois? Sinon, que puis-je faire pour désactiver des commandes individuelles?

En regardant l'aide, je ne vois que quelques options:

  • augroup!supprimera tout le groupe: je ne pense pas que ce soit correct car je veux le réactiver. (Mais peut-être qu'il existe un moyen de redéfinir facilement le groupe à nouveau?)
  • :noautocmdne désactivera que les rappels pour une invocation unique d'une commande. (Et il désactive tous les autocmds, pas ceux spécifiés)
  • eventignore traite de la liaison d'événement, pas de la commande: on dirait qu'elle désactive toutes les commandes liées pour un événement donné, pas seulement une commande ou un groupe que je peux spécifier.

Comment cela se fait-il?

Réponses:


20

De :help autocmd:

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

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

Il semble :noautocmddonc que c'est ce que vous recherchez.

Dans quel contexte souhaitez-vous désactiver un augroup?


Merci pour votre réponse, mais je l'ai déjà lu dans la documentation. J'ai clarifié ma question pour (espérons-le) montrer ce que je cherche.
Andrew Vit

8

De , il semble que cela y soit:

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

...

:autocmd! Foo BufEnter *

1

Pour toute personne qui n'a pas l'exigence d'affiches d'origine de pouvoir restaurer le augroup, :autocmd! <augroup name>est la commande de simplement supprimer tout autocmddans un augroup, par exemple:

:autocmd! MyGroup
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.