A few weeks ago, I decided to tackle the daunting challenge of learning Vim. As a new developer, learning Atom was fast and easy, but Vim is an entire paradigm shift. The idea of using letters instead of arrow keys to move around a document and mastering the different “modes” each present their own challenges.

So how did I go about it? I first stumbled across the site Upcase by thoughtbot and gave in to spending the $29.99 per month for the service. While the price may seem steep for someone with no income right now, I figure anything that helps make me into a better developer is worth the extra cost. They have video series along with extremely detailed lecture notes for learning Vim (among other things). One of the first things they suggest doing is typing vimtutor into your terminal and following along with the instructions. This was helpful to learn the basic commands, but I realized right away that what I actually needed was practice…lots of practice.

I made the commitment to work on at least one project or lesson per day in Vim. It was extremely frustrating (and slow) at first, but as I watched more of the Upcase videos and committed to even more practice, it started getting easier and easier. I also make it a point to Google shortcut commands I’ve forgotten (such as, ‘how do I jump to the end of the line in Vim?’) so I can get practice using them instead of taking the ‘long way around.’

The other thing that really helped was installing Vundle which is a Vim plugin manager. It’s pretty easy to use and it allows you to install cool plugins like CtrlP which finally allowed me to have a fuzzy file finder similar to Atom’s Ctrl-p. This was a total game changer for me since I could finally switch between files quickly and easily. Mastering tabs in Vim is another must-have if you’re going to switch to it full time, along with setting up custom key bindings to help access frequently used commands quickly.

Vim still seems slow to me but I know that eventually it will all be muscle-memory and I will be lightning fast (or so the guys at thoughtbot promise me)! The next challenge will be mastering tmux so I can setup a workflow run completely from my terminal.