Seeking Enlightenment in a Holy War

Posted on November 12, 2008

In the beginning…

For the unititiated, a brief explanation of what I mean by, Holy War. A “Holy War” is an intractable dispute between two parties whose only resolution is the agreement to disagree. Neither side can ever seem to convince the other that their position is superior. It’s a bit of a joke on the Internet.

The war that I am referring to in particular for this post is the editor war between vi and emacs. It is a long war that was started before I was even born and yet I, as many others do, feel rather strongly about it. It’s probably a good thing that I don’t invite comments on this blog as it could find itself yet another battle-ground for the great debate.

I have been on the side of vi since I started hacking with Linux back in 1998. Since then the sometimes mystical-seeming commands and modes have become second nature to me. So much so that I’ve experienced that elusive moment when the computer melts away and you’re programming and manipulating systems as fast as you can think. After the first time I felt that, I never went to any other editor. You could say that I became a religious fanatic.

Emacs during that time never really sunk in. I tried it from time to time but found the modifier-key system it uses too confusing and inconsistent. To me vi was a minimalist editor and emacs was a huge behemoth. I never really gave it a good chance and drew the line.

A duel…

I have always tried to keep an open mind. I was not an emacs user, but I didn’t feel compelled to tell everyone the reasons why I disliked it. I just liked vi and would only really evangelize if someone really pushed me to know what I liked about it. In my mind the Holy War was a moot debate. I had agreed to disagree.

Then a recent friend of mine on IRC suggested I try Lisp. Lisp is a rather old programming language still in use today that I’ve had an on-again-off-again relationship with for the past few years. In respect for his opinion, I decided to seriously commit to learning Lisp. As anyone who has tried learning Lisp knows, you will invariably encounter emacs.

At first I outright refused to believe that in order to seriously get into Lisp, I would really benefit from Slime — a sort of plugin for emacs for working interactively with a Lisp REPL. This was a denial phase for me. I really really didn’t want to be stuck having to learn emacs. I looked for alternatives that would let me stick with my beloved vi. While many were rather clever, they never came close to the full functionality that Slime offered.

The test…

So what’s a hardened vi veteran to do?

I hate to say it but: suck it up.

I am committing myself to trying emacs for one week. If I find myself more productive and can get used to the environment, then I might even turn-coat! Essentially I am sitting on the fence for a while. Slime will likely be a permanent fixture and therefore emacs as well. However, instead of tip-toe-ing around the elephant in the room, I thought I’d dive right in. If emacs truly is a superior editor, the evidence will reveal the truth.

So far?

Not so bad.

I’ve flipped the left control and caps lock keys. I’ve done a bunch of modifications to my .emacs file. I set up an account on my machine that uses stumpwm over straight X. I even installed a couple scripts that are allowing me to write this post from within emacs.

The verdict?

See you in a week.