When I learn something new I often get into this frenzy of consumption of knowledge where I need to read every book, article, video on the topic I can get my hands on. Every new book is a promise of magnificent and wondrous abilities which are just waiting to be learnt just a couple of pages away. I imagine myself inbued of this new power to be more awesome at coding and I can’t help to feel giddy with excitement.
Of course the excitement fades eventually and all that’s left then is the determination to finish what I started. Finishing things. What a great skill to practice. If you haven’t got around setting up your new year’s resolution that one might be it.
Back to topic. As you may have noticed from my favorite new topic in this blog, for the past few months I’ve been investing most of my dad free time learning more about vim. Thus I’ve read a bunch of books and I’m in a great place to give you some recommendations.
Here are my favorite books on vim in the order in which I read them with some brief reviews and some advice on whether any of these books is the right one for you.
The format of the book is quite uncommon. Instead of a teaching you vim in a linear fashion from beginner, to intermediate and finally to an advanced level, it takes a different approach. It breaks vim into a series of topics and shares tips about these specific topics from beginner to advanced. This means that if you are a beginner you may want to only read the first tips in each chapter. And if you are an advanced user you can just focus on improving a specific skill (like multi-file editing or navigation) by jumping to a given chapter, reading through and practicing that one skill. The cool thing about these tips are that they are delivered in problem/solution scenario and in a way that teaches you how a proficient vim user thinks.
Modern Vim also by Drew Neil expands on the previous book and focuses on helping you to set up Vim as a modern development environment. Following his guidance you’ll be able to imbue Vim with features more in line with what you’re accustomed from modern text editors and IDEs like in-editor linting, prettifying, testing, advanced navigation, integrated terminals, etc.
Learning Vimscript the Hard Way by Steven Losh is a great book solely focus in helping you learn how to configure Vim and how to extend it and customize it by writing your own plugins with vimscript. The book has a very practical approach with exercises throughout the book and pushes you to learn by doing. Really good book. Really well written.
The VimL Primer: Edit Like a Pro with Vim Plugins and Scripts by Benjamin Klein is another great book on learning to write Vim plugins with vimscript. This book is very short and very concise. It teaches how to build a vim plugin by building a vim plugin. The best way to learn is by doing, so spot on. If you are interested in learning how to write a vim plugin as fast as possible, then this is the book for you.
Mastering Vim Quickly: From WTF to OMG in No Time by Jovica Ilic is a great way to get started with Vim. It has the most important parts from Practical Vim in a third of the size and some things which weren’t included in Practical Vim. Additionally, Jovica complements the book with a super active twitter account MasteringVim that offers lots of helpful vim tips on a daily basis and a newsletter.
You’ve probably heard me say this before but if you haven’t here goes it:
Vim’s help is awesome.
And Vim’s help has two books hidden within its digital pages: The Vim user Manual and The Vim Reference Manual.
The Vim documentation consists of two parts:
- The User manual: Task oriented explanations, from simple to complex. Reads from start to end like a book.
- The Reference manual: Precise description of how everything in Vim works.
About The Manuals - Vim’s User Manual
:help, scroll down and enjoy. Alternatively
:help usr_02.txt and
:help intro for the beginning of the user and the reference manual respectively.
Funny thing. I started this article as a draft a month ago. And the poor thing has been sitting waiting for me to complete it for a month (Malin got sick. I got sick. Christmas came and went…). And I had no clue at the time but it turns out that now I’m writing a book on Vim. Yep. So it feels weird to write an article about books on Vim and not talk about my book. So here it goes!
This is one of the first drafts for the front cover which, following a slightly different approach from previous books, I’m drawing by hand. And there’s also a concept art of how the different supporting images within the book will look like (I’m testing different types of calligraphy and gothic is winning, but oh lord it takes time):
I hoped this article has helped you get some idea of some great books whose pages you can peruse to improve your vim skills. In fact, I recommend you to read many books on the same topic for two reasons: First, each author has different styles and backgrounds, they’ll explain things in a different way and their backgrounds and experience will favor some topics over others so that you’ll learn more about a topic as different authors will complement each other. Second, there is going to be overlap between books, and that’s great too, because repetition is a great way to learn stuff.
But as with anything, you can’t actually learn until you practice. So read the books, absorb as much knowledge as you can, learn what is available, and then just pick and practice whatever suits you best.
Take care and have a wonderful day!
P.S. I recently started reading a book that was published very recently: Mastering Vim: Building a Development Environment with Vim and Neovim by Ruslan Osipov (another Googler!). I have just started reading it so I don’t have an informed opinion about it other than so far so good. One cool thing though is that it is reviewed by Bram Moolenaar the creator of Vim.
Written by Jaime González García , Dad, Husband, Front-end software engineer, UX designer, amateur pixel artist, tinkerer and master of the arcane arts. You should follow him on Twitter where he shares useful stuff! (and is funny too).Follow @vintharas