Published Nov 1, 2011

There seems to be an age that people reach at which getting a new computer stops inspiring us to paroxysms of joy and starts making us cranky that things aren’t all set up just the same as they used to be. I fear I’ve reached that stage.

What’s the Tech Term for ‘Ossuary’?

I like working on Web things. Working on Web things means writing code. Geeks like me write code in programs called text editors — that is, apps that give you the most tools possible (fancy syntax-based coloring, predictive text completion, powerful find-and-replace, and more) to edit only the simplest kind of file (plain text, no font sizes or bold or even typefaces).

Being at said more mature stage in my life, I’ve gotten tired of trying the latest new app or switching when I change from Mac to PC or when they stop developing the text editor I’m used to or whatever. Plus, since I’m cross-platform now at my new job, I’d rather appreciate something that I could run on Mac, Windows, and Linux.

Okay, that’s a tall order. And, if you’re a geek, I bet you can guess where this is going. Well, you’re entirely right. For the rest of you, the story is this: they basically make two powerful, proven text editors that run everywhere: emacs and vim. Picking a side in this argument is pretty much like picking a side in Catholic vs. Lutheran or Mets vs. Yankees.

Naturally, this being a blog, I plan to pick a side.

Digression: Far Too Much Backstory

So my first exposure to these guys was back in college, when I used a text editor on a Vax to write scripts to do data analysis with SPSS. Depending on which specific server you signed on to (which was itself a function of traffic and of which tools you wanted to use on that server), you could edit that script with vim’s predecessor, vi; emacs; or pico. The server with emacs always had too many users on it, so I never really got a chance to try it out; I usually ended up on the server with vi and pico.

And I most certainly used pico. Vi has — vim too — this quirk: it’s modal. In one mode, it lets you enter text; in another mode, it gives you powerful tools to edit that text. You’re in the one mode or the other, which means that it’s hard to write text when you’re editing or edit when you’re writing. I generally hate modal apps and in college I quickly found myself hating vi. Pico, while almost entirely feature-free, at least got out of my way with that mode crap.

After college I was taken in by the newer-fangled text editors with actual graphical user interfaces and menus and buttons and all that good stuff. There was a long, passionate affair with BBEdit that ended only when I switched to OS X and needed a new version I didn’t want to buy. There were desultory years spent with Espresso, which looked good from afar but, close up, was far from good. HomeSite was of course mentioned above. Heck, I was even special buddies with the quirky Tex-Edit for quite a while.

Back to the Present Choice at Hand

So with all that under my belt, you can maybe see why I would be appealed to by an emacs or vim that had been around for thirty-ish years now. Plus, making all of those switches from one tool to the next certainly added up to more time spent learning than I’d burn learning emacs or vim just the once. So I decided to try the two. But, to be honest, I was pretty sure I already knew how it’d turn out.

Now, remember, I hated vi; so I was confident I’d hate vim too. And emacs sure seemed the right tool in abstract: I’m past the age at which I’m excited to see new stuff on my computer, and emacs has the advantage that it’s actually basically the world’s most powerful program and you can choose plug-ins and usage methods that actually let you accomplish virtually anything at all using just emacs, so I’d never need to learn another program again. (I’m pretty sure there’s an emacs web server out there somewhere, and I think they have an emacs first-person shooter as well.) Plus, you make it do all these awesome things by hitting control-something and typing in what you want it to do. Easy-to-remember and, actually, sounds just like a bigger version of my beloved LaunchBar.

So it was much to my surprise that, ten minutes into the tutorial, I’d already developed a deep loathing for emacs. I had to do that to move the cursor? That to edit the text? Remember that four-key combination to do the other everyday task? No thanks.

Another twenty minutes later, I was having great fun with vim (to the extent that one can have fun with a tutorial, anyway). All of a sudden I was starting to understand why I would want a text editor that actually was designed around editing text separately from writing it. I realized that vim may be crazy, but it’s my kind of crazy.

Tl;Dr; What’d You Choose Now?

So I decided to do the only smart thing: learn the hell out of vim by customizing it. Since it runs on every platform, I got it up and running at work, too. Then I set said customizations up on github so that I could keep them synced between home and work.

Thanks to the magic of the internet, you can read all about my progress with vim here and laugh both at my work practices and at the code I write. So, enjoy. And soon enough, enjoy my blog entry on A Month With Vim or Switching to Vim for GUI Geeks or something like that. And, of course, if you’re a vim user (or an emacs buff who thinks I made a horrible error), give me your hot tips here so that I can put them in my .vimrc straight away!