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?

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?


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 *

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.