And take advantage of a great feature called “autocommands” for… the automation part.
Autocommands are Vim’s way of executing arbitrary commands when specific events happen. Entering a window, quitting insert mode, loading a buffer with a specific filetype are some of the many events available.
An autocommand usually looks like that:
autocmd event pattern command
autocmd is the command that defines an autocommand,
event can be a single event or a comma-separated list of events,
pattern is a simple pattern describing what [todo] and
command is what we want to happen.
Scrolling through the list at
:help autocommand-events we find
BufWritePost which looks like it can be used after
:cwindow. Let’s try it:
autocmd BufWritePost *.c silent make|cwindow
Phew! That was easy…
But we are not finished with autocommands yet. The way that feature is implemented makes it easy for autocommands to “pile up” when we source our
vimrc during a session and provoke performance issues. To avoid side effects, we should wrap our autocommands in an
augroup and empty it before define our actual autocommands. The whole boilerplate looks like this:
augroup groupname autocmd! autocmd event pattern command augroup END
augroup c autocmd! autocmd BufWritePost *.c silent make|cwindow augroup END
From there, one can configure many things to suit his needs: what program to run when doing
:grep, how to parse the output of those comands so that it can be used in the quickfix list, for what filetype to use what setting… but that will be the subject of another chapter.