From vim to emacs

Posted on Sat 30 November 2013 in tech

I grew up as a programmer on vim. In my first week at college, I was treated to an interesting discourse on the virtues of vim, emacs and their ilk from Prof. Suban which first lead me to appreciate them better. Vim is simple, and very quickly becomes a part of the background. You forget that it exists, as you work through the code. Its loaded with some amazing stuff that can really make you productive, yet at the same time, it simply does not throw that at you all at once. You can learn how to use it after following through the first few screens of vimtutor, and that can be enough for all the editing you will ever do. Just when you start getting frustrated with doing repetitive stuff on the screen and start searching around for a smarter way, you will quickly spot a promising command that will make very short work of the problem. vim is awesome, and I spent close to six years using it as my editor of choice.

A few months ago, reading though some of Steve Yegge's posts about emacs convinced me to give emacs a try. This wasn't the first time I had fired up emacs. I had been through its tutorial a time or two before and could make my way through it without finding it too alien. However, this time, I had decided to give it a week. Since then, I have not come back to using vim. Working with emacs was a period of rediscovery in text editing. When I was working with vim, my approach to using it was very functional and lazy. I would only care to learn about something in vim, when the choice I had was between learning more about my editor or spending a couple of hours doing things the mundane way. Emacs however, is nowhere as humble as vim is! Working with the former, I felt that there was a lot more that I could get done, if I could only learn how to use feature X properly. And emacs has a quite a few of such feature Xs.

However despite the apparent promiscuity of emacs, it is a very focused editor. The coherence of its interface is extremely refreshing. Also, it makes it very easy to work with complex commands. It infers more about the text, and its nature when providing its interface, unlike vim, which does precisely what it is asked to do more often than not. Another interesting facet of emacs is that it can be used as a complete and flexible development environment and handle duties as my terminal of choice, windowing manager, ssh/grep replacement, magit version control, org mode goodness and a whole lot more.