This is a meditation on making my peace with Vim, the present
instantiation of vi
, one of the old text editors from the days of the
"editor wars" before Bill Gates and Steve Jobs and their wares were
fixtures in the media and our households.
In the editor wars, vi
was the great rival of Emacs — this
relationship has been described with precision and acerbity
elsewhere, but they and their adherents were once the Punch and Judy
of programmers' intellectual world. They were seen as tokens of
competing outlooks and much was made of the rivalry. When I got back
into programming, I knew I would have to revive my long-deferred
relationship with them. I had already found vi
to suit my temperament
more happily, but its learning curve is steeper so I took up Emacs
first.
The two striking things about Emacs were its great power and the unfamiliar way that familiar tasks were named and conceived of. Its power is the reason to use it; the vocabulary and ideas are the price of that power. For instance, copying and pasting text are not part of Emacs — they come from the Jobs/Gates world. In Emacs there is no "clipboard" but there is a "kill-ring", where pieces of text go when when you "kill" them with \^-k. The kill-ring is a stack structure of what we would now call clipboards, where you can find different things you have killed, if you have saved the with "kill-ring-save" (meta-key plus w). If you want to use something in the kill-ring, you "yank-pop" it back with \^-y.
I wrote this about a year ago, when I was struggling to adapt to Emacs:
Don't think copy; think kill-ring-save;
don't think paste; think yank.
Strange new terms are things to save;
let your mind be their bank.
I got reasonably comfortable with Emacs. It is a work of abiding quality, though as I had anticipated, not entirely perfect for me. Now I am ready to deal with Vim.
A friend recently wrote to say that he had become addicted to Vim and, despite the burden of many grave professional obligations, has found himself spending dozens of hours adjusting the settings it to suit himself. The first thing he did was remap the equivalents of copy and paste to the familiar key-commands \^-c and \^-v, and at some point after that he awoke to find himself tumbling down a steep passageway of editor configuration without end.
I told him not to feel guilty, because there are just two kinds of people: those who live on friendly terms with tools and those who don't. We have no choice as to which kind we are. Tool-people need to spend time mastering and adjusting their tools. It is an act of self-fulfillment and neither to be rushed nor disparaged.
I did not tell him that for myself, copy/paste are among the very last things I would change.
The familiar Jobs/Gates conception of word-processing, and therefore its characteristic terminology, and therefore also its system of key commands, represents a model of thinking to which I would like to have alternatives. That was one of the big appeals about Emacs, frankly — and about Awk and TeX and Vim, all survivors from decades ago. These things, coelacanths in the ocean of modern computing, seem to me to possess a goodness of their own just because they represent a competing vision of how to work and how to use basic tools.
This, more than even Vim and Emacs in particular, is what attracts me about old utilities that have survived into the new dispensation. Using them well means training my mind to unfamiliar processes and conceptions, and that gives me a feeling of great well-being. The hunt is not about the fox.