cat posts/2023-08-08-bram-moolenaar-and-the-editors-that-shaped-me.md

Bram Moolenaar and the editors that shaped me

· 4 min read · vim tools editors open-source

In 2009 I wrote a post here called Tools don’t matter. Its first sentence is “I don’t use vim or emacs”, and the rest of it is me explaining, at some length, that I’d tried several times, kept going back to Visual Studio, Eclipse and Notepad++, and had made my peace with that. I reread it on Saturday, after the news that Bram Moolenaar had died, and it made me laugh, because I’m writing this in Neovim.

His family posted to the Vim mailing list that he died on August 3, at 62, after a medical condition that progressed quickly over a few weeks. He’d been maintaining Vim for over thirty years. The first public release, 1.14, went out on a Fred Fish disk for the Amiga in November 1991. It was “Vi IMitation” then, and became “Vi IMproved” a couple of years later. Vim 9.0, with its new script language, came out just last summer. That’s one person carrying a piece of software that a very large fraction of the world’s servers have installed, for most of my life as a programmer.

He also never charged for it. Vim has been charityware forever: if you find it useful, the license asks you to consider donating to ICCF Holland, the foundation he worked with that supports children in Kibaale, in Uganda. Every :help screen I’ve ever opened has had that note in it somewhere, and I’ll admit I skipped past it for years. I made a donation this weekend, which is late but not nothing.

How I got here

My first editor was the Turbo C IDE on DOS, with its WordStar keys. Ctrl-K B and Ctrl-K K to mark a block, Ctrl-Y to delete a line. I didn’t know they were WordStar keys at the time, I just thought that was what keys did. From there it was Visual Studio for a long time, through the MVP years, and in that world Vim was something Unix people argued about on Slashdot.

The times I sat down to “learn Vim properly”, the pattern the 2009 post describes, never stuck. Servers did it in the end. Once most of what I ran was Linux boxes in a cloud somewhere, vi was the editor that was always there, on every machine, every rescue image, every container someone had shelled into. I learned enough to edit a config file and get out (:wq, and yes, I’ve had to look up how to quit), and then a bit more, and then one day I noticed I was reaching for ciw in Visual Studio and getting the letters “ciw” in my code.

So I installed VsVim, which, nicely, was written by Jared Parsons at Microsoft, and then the Vim extension when I moved to VS Code. That’s been my setup for years: Vim keys inside whatever editor the project wanted. In the last couple of years I’ve been spending more time in Neovim directly, in a terminal, for anything that isn’t a big .NET solution, mostly because I wanted my editor to be the same on the Mac, the Windows laptop and the Linux boxes, and a terminal editor is the easy way to get that.

What Vim actually taught me is that editing is a language. d is delete, w is a word, i is inside, " is a quoted string, and you compose them, so di" deletes the inside of a string without you ever having learned that as a separate shortcut. Turbo C and Visual Studio gave me a list of keys to memorize. Vim gave me a grammar, and a grammar keeps paying off in a way that a list doesn’t. Bram didn’t invent modal editing (that was Bill Joy’s vi, and before it ed), but he’s the reason it survived into the age of GUIs and then spread into every other editor as an emulation mode.

Was the 2009 post wrong?

Partly. Its argument was that once you’ve mastered a tool, the tool matters less than the person using it, and I still think that’s mostly right. You can write good software in Notepad++. What I didn’t see in 2009 was that some tools travel with you better than others. My Visual Studio skills were very deep and only worked in Visual Studio. My Vim skills, which are much shallower, work in every editor I’ve used since, and on every server, and in the shell (set -o vi), and in a surprising number of web apps that support j and k. A skill that works everywhere is worth more than its depth suggests.

The other thing I’d say to 2009 me is that the “elite club” feeling I described was beside the point. I didn’t learn Vim because I wanted to join the Guru Hackers*. I learned it because it was the editor on the box at 2 AM, and then it was comfortable. That’s how most tools win, I think.

Vim itself will be fine, as far as I can tell. Christian Brabandt and others have been co-maintaining it for a while, and Neovim is a healthy separate project. But Vim has been the work of one very patient person for thirty-two years, and that’s worth stopping to say thank you for, even from someone who came late.

* Still my term from 2009. I’m not proud of it.