Home Explore Blog CI



neovim

2nd chunk of `runtime/doc/autocmd.txt`
c4abc30bb2b7a4b82b57ac2c97fa6a328409e0bb346c1bc20000000100000fa5
 augroup END
	:augroup mine | exe "au BufRead * set tw=70" | augroup END

<							*autocmd-expand*
Note that special characters (e.g., "%", "<cword>") in the ":autocmd"
arguments are not expanded when the autocommand is defined.  These will be
expanded when the Event is recognized, and the {cmd} is executed.  The only
exception is that "<sfile>" is expanded when the autocmd is defined.  Example:
>
	:au BufNewFile,BufRead *.html so <sfile>:h/html.vim

Here Vim expands <sfile> to the name of the file containing this line.

`:autocmd` adds to the list of autocommands regardless of whether they are
already present.  When your .vimrc file is sourced twice, the autocommands
will appear twice.  To avoid this, define your autocommands in a group, so
that you can easily clear them: >

	augroup vimrc
	  " Remove all vimrc autocommands
	  autocmd!
	  au BufNewFile,BufRead *.html so <sfile>:h/html.vim
	augroup END

If you don't want to remove all autocommands, you can instead use a variable
to ensure that Vim includes the autocommands only once: >

	:if !exists("autocommands_loaded")
	:  let autocommands_loaded = 1
	:  au ...
	:endif

When the [group] argument is not given, Vim uses the current group (as defined
with ":augroup"); otherwise, Vim uses the group defined with [group].  Note
that [group] must have been defined before.  You cannot define a new group
with ":au group ..."; use ":augroup" for that.

While testing autocommands, you might find the 'verbose' option to be useful: >
	:set verbose=9
This setting makes Vim echo the autocommands as it executes them.

When defining an autocommand in a script, it will be able to call functions
local to the script and use mappings local to the script.  When the event is
triggered and the command executed, it will run in the context of the script
it was defined in.  This matters if |<SID>| is used in a command.

When executing the commands, the message from one command overwrites a
previous message.  This is different from when executing the commands
manually.  Mostly the screen will not scroll up, thus there is no hit-enter
prompt.  When one command outputs two messages this can happen anyway.

==============================================================================
3. Removing autocommands			*autocmd!* *autocmd-remove*

:au[tocmd]! [group] {event} {aupat} [++once] [++nested] {cmd}
			Remove all autocommands associated with {event} and
			{aupat}, and add the command {cmd}.
			See |autocmd-once| for [++once].
			See |autocmd-nested| for [++nested].

:au[tocmd]! [group] {event} {aupat}
			Remove all autocommands associated with {event} and
			{aupat}.

:au[tocmd]! [group] * {aupat}
			Remove all autocommands associated with {aupat} for
			all events.

:au[tocmd]! [group] {event}
			Remove ALL autocommands for {event}.
			Warning: You should not do this without a group for
			|BufRead| and other common events, it can break
			plugins, syntax highlighting, etc.

:au[tocmd]! [group]	Remove ALL autocommands.
			Note: a quote will be seen as argument to the :autocmd
			and won't start a comment.
			Warning: You should normally not do this without a
			group, it breaks plugins, syntax highlighting, etc.

When the [group] argument is not given, Vim uses the current group (as defined
with ":augroup"); otherwise, Vim uses the group defined with [group].

==============================================================================
4. Listing autocommands					*autocmd-list*

:au[tocmd] [group] {event} {aupat}
			Show the autocommands associated with {event} and
			{aupat}.

:au[tocmd] [group] * {aupat}
			Show the autocommands associated with {aupat} for all
			events.

:au[tocmd] [group] {event}
			Show all autocommands for {event}.

:au[tocmd] [group]	Show all autocommands.

If you provide the [group] argument, Vim lists only the autocommands for
[group]; otherwise, Vim lists the autocommands for ALL groups.  Note that this
argument behavior differs from that for defining and removing autocommands.

Title: Nvim Autocommands: Expansion, Avoiding Duplicates, and Removal
Summary
This section covers several aspects of Nvim autocommands. It explains that special characters in `:autocmd` arguments are expanded when the event is recognized, except for `<sfile>`, which is expanded when the autocmd is defined. It details how to prevent duplicate autocommands by using a variable or defining them within a group. It then covers removing autocommands using `:autocmd!`, discussing different ways to remove autocommands based on event, pattern, or group. Finally, it describes how to list existing autocommands using `:autocmd`.