The :history of Vim

anonymous


Vim is a lot of things. To those who are familiar with it, it's a highly-customizable modal text editor; to the million+ users who wind up on one of Stack Overflow's most infamous questions, it's a development pit of despair. It's one of the first prominent instances of charityware, and, even in an era of hyper-intelligent and feature-complete IDEs, one of the most popular development environments in the world. One of the most interesting things about Vim, though, is that it is a living relic straddling two very different periods in computer science.

Vim's roots stretch back to the early days of terminal editing. Bill Joy, then a graduate student at UC Berkeley (and later a co-founder of Sun Microsystems), began working on an improved version of the popular editor ed; his new version was named ex. Developers at the time were working on teleprinters, not terminals, so they were coding blind; they could not see what they were typing. Instead, they had to meticulously build up mental images of what they were writing, only capable of checking their work (and not editing it!) by printing it out later. In 1977, Joy released a visual version of ex--which allowed users to type directly on their terminals--and named it vi--short for visual. vi spread rapidly, but its reach was limited since it had to be ported to each individual system. This led to many different offshoots of vi springing up, including Stevie, which was created for the Amiga family of computers.

In 1988, a Dutch software developer named Bram Moolenaar got a new Amiga computer and wanted to start editing in vi. Stevie was buggy and unsatisfying, so Moolenaar began writing a new vi port, based on its source code. He named the project ‘Vi IMitation', or ‘Vim' for short. In 1991, he released the first public version of it. At that point, it was technically no longer an imitation; Moolenaar had implemented one of the most sorely-missed features that vi lacked: multi-level undo. This trend of new features continued, and by the release of Vim 1.14, the name and aim of the project had changed. Moolenaar no longer wanted just to imitate, but to enhance; thus, Vim became ‘Vi Improved'. More than 25 years and 7 major releases later, Vim stands as one of the premier developing environments--and all but unrecognizable from its humble origins as a vi clone.

vi may have fallen by the wayside, ousted by superior editors as time went on, but its legacy lives on. Vim's emphasis on vi-compatibility means that now, 40 years after Joy began writing a visual terminal editor, we can still directly see Joy's design influencing the world. Scattered throughout Vim are tiny remnants of this past. When a developer types uses ‘y' to ‘yank' a line of text, they're eschewing the more typical ‘copy' idiom in favor of Joy's mnemonic. h/j/k/l make sense as movement keys since they're located on the home row, allowing for more efficient touch typing, but they're also reminiscent of the days when arrow keys were non-standard and developers operated on keyboards which had arrows marked on those four keys. Vim is more than a holdover from the past, though. It is a completely different way of approaching editing--one which, it seems, will stick around for quite a bit longer.