I have been doing programming for 8 years now(6 years professionally). Given the lazy & dumb person I am, I am always on a constant lookout for new tools to make my job easy by every passing day. The most important tool in your armoury as a programmer is your text editor. Why the most important? Because that's where you write the code(off course assuming you are not "The Real Programmer").

I have used many text editors and IDE in past years. I used Eclipse, NetBeans, Komodo IDE/Edit, Notepad++(still use it if I have to(unavoidably) work on Windows). Tried my best to use GEdit and Kate as productively as possible. With some of these I started off very well; even enjoyed my ride for sometime. But all of them starting falling apart at one point or the other. Some where monsters and others where simply dumb when it came to any sort of serious text manipulation.

Then about 6 months back, I started thinking seriously about switching to either Emacs or Vim. Emacs was my first choice because I thought modal editing of Vim is just too big a PITA and always wondered why do those nutheads used Vim. Least did I know, remembering a gazillion finger breaking key combinations will drive me crazy within a few days only. I have been using Vim on and off for small editing tasks and when I had ssh to remote machines, but I never tried to learn it properly.

Suddenly, one day it dawned, on me why Vim is the perfect editor for me and I said to myself, "enough is enough, I am doing this". Thus started the my journey of Vim discovery. What follows is how I learned to work with Vim. This is in no way the holy grail of learning Vim, its just what worked for me. It might work for you or it might ruin your Vim experience forever. You have been warned.

Every tutorial, guide or documentation I checked just scared me with all the details and Vim jargon. Moment you open these, either they bore you with how awesome Vim is or throw a long list of never ending Vim commands and modes. What I actually liked and used was this kick ass, super awesome graphical Vim cheatsheet. It taught me more about vim in 8 pages what no other tutorial/guide could. I slowly worked my way through each page, learning a page and working with it for few days until I was comfortable. Then I would move on to next page and repeat the process.

My idea of starting with Vim is:

  1. Know the 3 modes: Normal mode, Edit mode, Command mode & how to enter/exit the modes & move from one mode to another
  2. When not editing/entering the text, try to reaming inside Normal mode as much as possible.
  3. Download the cheatsheet, print it and paste is on the wall directly above your monitor where you can just see it.
  4. Work through the cheat sheet, 1 page at a time.

Believe you me, thats all how I learned Vim. No big books needed, no lengthy tutorials, no jargon. Just these 8 pages and a great virtue called patience. I still have these pages pasted on the wall in front of me when I work. Also checkout this a nice introduction to vim by Micheal Jakl, only tutorial I know of that introduces Vim modes in 3 lines and single diagram.

You just need the basics, everything thing else about vim can wait. If somebody tells you that you need to understand the vim philosophy to use it well, tell them to mind their own damn business; You do not, not at the beginning; Once you start loving vim, the philosophy will dawn on you automatically. If someone asks you to disable the arrow keys and only use h,j,k,l, plug your ears with your fingers as tight as you can; Once you start picking up more and more of vim, you will disable arrow keys without anyone telling you to do so.

Now coming back to my story, I am happily settled with Vim not and am pretty sure that Vim and me are going to stay married for quite a long time. I am still learning, there are still a huge number of things, which I know nothing of; but I have learned from the awesome FOSS community; which we should be really proud of.

My vim configurations along with bash and some others, are available at github.com/mnazim/dotfiles. Fork it, use it the way you like. Don't forget share it back.