Lots of ideas from http://bitbucket.org/sjl/dotfiles/src/tip/vim/