Skip to content

Autocommands in Vim/Neovim

Table of Contents

Removing Autocommands

:h autocmd! | autocmd-remove Using :au! will remove the autocommand(s) based on the other arguments.

Removing Autocommands for Certain augroups

:au! [group]            " Remove all autocommands from [augroup]"
:autocmd! MarkDownAug   " Remove all autocmds from the MarkDownAug augroup

Autocommand Patterns

:h aupat | autocmd-pattern

The {aupat} argument of :autocmd can be a comma-separated list.

:autocmd BufRead *.txt,*.info set et
" Is equivalent to: 
:autocmd BufRead *.txt set et
:autocmd BufRead *.info set et

Using Expressions (like <cword>) in Autocommand Patterns

:h *E499 | E500 | <afile> When using <abuf> in an autocmd, it will be replaced with the current active buffer number (like bufnr()). For the name of the buffer: bufname()

Autocommand Events and Event Data

        *v:event* *event-variable*

v:event
Dictionary of event data for the current autocommand. Valid only during the event lifetime; storing or passing v:event is invalid! Copy it instead: > * au: TextYankPost * let g:foo = deepcopy(v:event) Keys vary by event; see the documentation for the specific event, e.g. DirChanged or TextYankPost. * KEY: DESCRIPTION ~ * abort: Whether the event triggered during an aborting condition (e.g. c_Esc or c_CTRL-C for CmdlineLeave). * chan: channel-id * cmdlevel: Level of cmdline. * cmdtype: Type of cmdline, cmdline-char. * cwd: Current working directory. * inclusive: Motion is inclusive, else exclusive. * scope: Event-specific scope name. * operator: Current operator. Also set for Ex commands (unlike v:operator). For example if TextYankPost is triggered by the :yank Ex command then v:event.operator is "y". * regcontents: Text stored in the register as a readfile()-style list of lines. * regname: Requested register (e.g "x" for "xyy) or the empty string for an unnamed operation. * regtype: Type of register as returned by getregtype(). * visual: Selection is visual (as opposed to, e.g., via motion). * completed_item: Current selected complete item on CompleteChanged, Is {} when no complete item selected. * height: Height of popup menu on CompleteChanged * width: width of popup menu on CompleteChanged * row: Row count of popup menu on CompleteChanged, relative to screen. * col: Col count of popup menu on CompleteChanged, relative to screen. * size: Total number of completion items on CompleteChanged. * scrollbar: Is v:true if popup menu have scrollbar, or v:false if not. * changed_window: Is v:true if the event fired while changing window (or tab) on DirChanged. * status: Job status or exit code, -1 means "unknown". TermClose