Learning Vim, or, You Will Briefly Suck At Computers

Aug 10, 2011

By Jamison Dance

I tried to type a document in a word processor the other day, only to find the document littered with `:w` and `cw` commands. Pages, where are your Vim bindings? Learning Vim (Vim can be replaced by Emacs for most of this stuff) makes coding in it a breeze, and trying to code without it a nightmare. It is definitely worth it to invest the time to become proficient in a good editor, but I tried and failed several times before finally getting it.

My problem with Vim was exactly what makes it so great: its depth and power. I know you can just get by with `:w` to save, `:q` to quit, `i` to enter insert mode, escape to exit, and the arrow keys to move around, but I knew I was missing out on all that Vim had to offer, and it bothered me. I would read a tutorial about macros or text objects or autocmd or registers or marks and soon would be deep in the depths of the vim help reading about something that I would never use.

I got so distracted by all that Vim could do that I never just sat down and used what I needed to code. It finally clicked when I decided I was okay not knowing how to use Vim, as long as I got incrementally more comfortable with it. That freed me up to be terrible at it, but learn little by little instead of all at once.

So if you have tried and failed to learn Vim, try again, but just acknowledge that you will feel like your grandpa typing emails for a while. Don’t get overwhelmed by the tutorials and books and configurations. Start out simple. That is okay.

Here are some Vim resources that I found helpful. I revisit these every so often and pick up new things from them. Don’t read them all at once, and don’t learn them all at once.

  1. Efficient Editing With Vim
  2. Useful Vim command for developers
  3. Vim cheet sheet
  4. Vim plugins you should know about series
  5. Janus - a gVim and MacVim configuration that I like
Jamison Dance enjoys kittens, making computers smarter and the magic of children's laughter. He tweets at @jergason and GitHubs as jergason. He also podcasts on JavaScript Jabber and Soft Skills Engineering.