http://learnvimscriptthehardway.stevelosh.com/chapters/05.html