More to write about after spending a weekend hacking on vim plugins.

Autocmd is probably one of the most powerful features of vim, but also one of the easiest to mis-use. If you ever end up copy-and-pasting someone else’s autocmd examples, beware!

Here’s one that I had in my .vimrc forever

autocmd BufRead,BufNewFile,BufAdd *.php setlocal ft=php

Looks sane enough. Turns out BufAdd is a bad idea here. From the docs:

NOTE: When this autocommand is executed, the current buffer “%” may be different from the buffer being created “<afile>”

Oops, this means that this command will run in the context of the current buffer, not the new buffer being created. In practice, this meant that sometimes when I opened php files, the file I was currently looking at would get it’s filetype set to php, which was super confusing.