by Jess Males | Technical Consultant at Taos
I’m young enough that I missed the editor wars. I’ve heard the tale of the righteous crusades where mobs rallied around banners of Emacs or Vi and set aflame large swaths of Usenet. Assuming they weren’t just curmudgeons fighting for irascibility’s sake alone; why would anyone get worked up about a text editor? I imagine three main reasons.
First, there is the accomplishment. These tools have many esoteric and cryptic key sequences that, by themselves, sound like nonsense, but for the advanced user represent powerful incantations. Mastery of these sequences is hard-won knowledge, built over years. There is pride in having learned it; even the master once opened VI and had no idea how to exit the editor. Now, they think nothing of the issuing a Vi key sequence such as `”bct)<ctrl-r>a`.
Secondly, a powerful editor allows an expressiveness and precision when working text. While commands for these editors may sound like arcane utterances, these commands represent an ability to fluidly manipulate text. This skill is especially important because editing code is not writing an essay. Your high-school English teacher may have marked up your whole essay in red-ink, but a compiler is more finicky yet, dying with the code ID-10-T on the first error and insisting you fix it before telling you about any remaining errors. In such an environment, making effective changes saves hours of later frustration.
These days, we’re used to talking about computer commands, but at one point ‘command’ was just a neologism chosen because it was descriptive. Literally, we command the program to do something: delete a word, move text, &c. These strings of characters are the command language of the editor. While `”bct)<ctrl-r>a` looks rather cryptic it instructs the editor to cut-paste text, with the added side effect of saving the string thus replaced. Being a language, this sequence is composed of several parts, each part adding something to the overall command. Understanding this command language has the programmer fluently editing code, transcending the mechanics of any particular key sequence. And this is my final point: these programs have idioms, that once mastered, reward people that thinking in a certain way. For once they think in this way, they can create arbitrary sequences to perform new actions at will.
Accomplishment, precision, and composable, idiomatic language: this is a heady mix. These combine giving a strong sense of power over the editor. And isn’t that what has caused most wars, disagreements over who wields power?