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