How to disable autocmd or augroup in vim?

26

3

Given I have a group of commands such as:

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

I want to disable all the autocommands in MyGroup for a time and then re-enable it later.

Is there anything I can do with the group? Specifically, is there a way to disable the whole group at once? If not, what can I do to disable individual commands?

Looking at the help, I only see a few options:

  • augroup! will delete the whole group: I don't think this is right since I will want to re-enable it again. (But maybe there's a way to easily redefine the group again?)
  • :noautocmd will only disable the callbacks for a one-off invocation of a command. (And it disables all autocmds, not specified ones)
  • eventignore addresses the event binding, not the command: it sounds like it disables all bound commands for a given event, not just one command or a group I can specify.

How is this done?

Andrew Vit

Posted 2012-06-20T02:51:31.880

Reputation: 990

Answers

22

From :help autocmd:

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

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

So it appears :noautocmd is what you are looking for.

In what context do you want to disable an augroup?

romainl

Posted 2012-06-20T02:51:31.880

Reputation: 19 227

Thanks for your answer, but I read this in the docs already. I clarified my question to (hopefully) show what I'm looking for. – Andrew Vit – 2012-06-21T08:45:29.873

9

From here, it seems that this achieves it:

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

...

:autocmd! Foo BufEnter *

ivotron

Posted 2012-06-20T02:51:31.880

Reputation: 191

1

For anyone who doesn't have the original posters requirement of being able to restore the augroup, :autocmd! <augroup name> is the command to simply delete all autocmd in an augroup, e.g.:

:autocmd! MyGroup

robenkleene

Posted 2012-06-20T02:51:31.880

Reputation: 1 946