What are some of the ways to construct autocommand groups in the .vimrc? What is the benefit of grouping autocommands? Can you provide some materials on proper use of autocommand groups? Any help here is greatly appreciated. Thanks!
One of the most common uses of autocommands is to allow you to execute commands only on specific filetypes, or to customize a keymapping to execute differently in different filetypes.
For example, I could do
augroup filetype_ruby autocmd! autocmd FileType ruby nnoremap <buffer> <localleader>t :!rake test augroup END augroup filetype_erlang autocmd! autocmd FileType erlang nnoremap <buffer> <localleader>t :!rebar eunit augroup END
What this example does is it maps the
<localleader>t hotkey to running tests through the appropriate build tool - using rake in a ruby project, and rebar in an erlang project.
This is especially useful for developers making plugins specific to a certain programming language, like vim-ruby or any of tpope's ruby plugins.
There are other events you can use besides FileType - there's:
- BufWrite (when a buffer is written)
- FileAppendCmd ( when a file is appended to)
and many others. Basically, if you want vim to execute specific commands when these events are fired, augroups are the way to go.
Some good references for reading and learning:
- Learn VimScript the hard way
- Vim Documentation
- :h autocmd-groups