¿Cómo deshabilitar autocmd o augroup en vim?


25

Dado que tengo un grupo de comandos como:

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

Quiero deshabilitar todos los comandos automáticos en MyGroup por un tiempo y luego volver a habilitarlo más tarde.

¿Hay algo que pueda hacer con el grupo? Específicamente, ¿hay alguna manera de deshabilitar todo el grupo a la vez? Si no, ¿qué puedo hacer para deshabilitar comandos individuales?

Mirando la ayuda, solo veo algunas opciones:

  • augroup!eliminará todo el grupo: no creo que esto sea correcto ya que querré volver a habilitarlo nuevamente. (¿Pero tal vez hay una manera de redefinir fácilmente el grupo nuevamente?)
  • :noautocmdsolo deshabilitará las devoluciones de llamada para una invocación única de un comando. (Y deshabilita todos los autocmds, no los especificados)
  • eventignore aborda el enlace de eventos, no el comando: parece que deshabilita todos los comandos enlazados para un evento determinado, no solo un comando o un grupo que puedo especificar.

¿Cómo se hace esto?

Respuestas:


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.

Entonces parece que :noautocmdes lo que estás buscando.

¿En qué contexto desea deshabilitar un augroup?


Gracias por su respuesta, pero ya leí esto en los documentos. Aclaré mi pregunta para (con suerte) mostrar lo que estoy buscando.
Andrew Vit

8

A partir de aquí , parece que esto lo logra:

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

...

:autocmd! Foo BufEnter *

1

Para cualquiera que no tenga el requisito de póster original de poder restaurar el augroup, :autocmd! <augroup name>es el comando simplemente eliminar todo autocmden un augroup, por ejemplo:

:autocmd! MyGroup
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.