Come disabilitare autocmd o augroup in vim?


25

Dato che ho un gruppo di comandi come:

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

Voglio disabilitare tutti i autocomandi in MyGroup per un po 'di tempo e poi riattivarli in seguito.

C'è qualcosa che posso fare con il gruppo? In particolare, c'è un modo per disabilitare l'intero gruppo contemporaneamente? In caso contrario, cosa posso fare per disabilitare i singoli comandi?

Guardando l'aiuto, vedo solo alcune opzioni:

  • augroup!eliminerò l'intero gruppo: non penso che sia giusto poiché lo riattiverò di nuovo. (Ma forse c'è un modo per ridefinire facilmente il gruppo di nuovo?)
  • :noautocmddisabiliterà i callback solo per una chiamata una tantum di un comando. (E disabilita tutti gli autocmds, non quelli specificati)
  • eventignore risolve l'associazione di eventi, non il comando: sembra che disabiliti tutti i comandi associati per un determinato evento, non solo un comando o un gruppo che posso specificare.

Come si fa?

Risposte:


20

Da :help autocmd:

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

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

Quindi sembra :noautocmdche tu stia cercando.

In quale contesto vuoi disabilitare un augroup?


Grazie per la tua risposta, ma ho già letto questo nei documenti. Ho chiarito la mia domanda per (si spera) mostrare ciò che sto cercando.
Andrew Vit,

8

Da qui , sembra che questo lo raggiunga:

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

...

:autocmd! Foo BufEnter *

1

Per chiunque non abbia i requisiti di poster originali per poter ripristinare augroup, :autocmd! <augroup name>è il comando di eliminare semplicemente tutto autocmdin un augroup, ad esempio:

:autocmd! MyGroup
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.