Como desabilitar o autocmd ou o augroup no vim?

21

Dado eu tenho um grupo de comandos como:

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

Desejo desativar todos os comandos automáticos no MyGroup por um tempo e reativá-lo posteriormente.

Existe alguma coisa que eu possa fazer com o grupo? Especificamente, existe uma maneira de desativar todo o grupo de uma só vez? Se não, o que posso fazer para desativar comandos individuais?

Olhando para a ajuda, vejo apenas algumas opções:

  • augroup!excluirá todo o grupo: não acho que isso esteja certo, pois desejo reativá-lo novamente. (Mas talvez haja uma maneira de redefinir facilmente o grupo de novo?)
  • :noautocmdsó desabilitará os retornos de chamada para uma chamada única de um comando. (E desativa todos os autocmds, não especificados)
  • eventignore endereça a ligação de eventos, não o comando: parece que desativa todos os comandos ligados para um determinado evento, não apenas um comando ou um grupo que eu possa especificar.

Como isso é feito?

Andrew Vit
fonte

Respostas:

18

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.

Então parece :noautocmdque você está procurando.

Em que contexto você deseja desabilitar um augroup?

romainl
fonte
Obrigado pela sua resposta, mas eu já li isso nos documentos. Eu esclareci minha pergunta para (espero) mostrar o que estou procurando.
Andrew Vit
8

A partir daqui , parece que isso alcança:

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

...

:autocmd! Foo BufEnter *
ivotron
fonte
0

Para quem não tem o requisito original de ser capaz de restaurar o augroup, :autocmd! <augroup name>é o comando para simplesmente apagar tudo autocmdem um augroup, por exemplo:

:autocmd! MyGroup
robenkleene
fonte