The Chronicle

of a ColdFusion Expatriate

Learning to Love Emacs

It would be safe to say that I’m a Vim devotee; a follower. I own more than one t-shirt with Vim “stuff” on it (one bearing its logo, another the image of “HJKL” key caps). I’ve spoken at local Vim meetups, I subscribe to Vim-related lists, I’ve casually urged people to switch from Sublime Text to Vim at the office and a few actually did.

For me, saying that I use Emacs or, heaven forbid, advertising it through wardrobe choices, feels like an act of high treason.

Still, it is true. I’ve been secretly using Emacs for the past few months, exclusively. I have told a few people at work and all of them, without exception, literally gasped. That’s how broadly I had advertised my love of Vim. But it’s time now to explain why I switched and why you should think about switching, too.

From Vim to Emacs in Fourteen Days

Yes, my friends, it is true. After more than fifteen years using Vim, teaching Vim, proselytizing about Vim, all the while scoffing in the general direction of Emacs, I’ve seen the light. The light of Lisp… Or something.

In this post, I am going to illustrate the high points of what is necessary to make Emacs behave so much like Vim you’ll almost forget it’s Emacs, except when it does something so awesome you’ll wonder why you didn’t try it sooner (or something so frustrating it gives you reminiscent pangs of Vim).

It’s taken me at least the fourteen days described in the title, but with my help it should only take you two or three. There are some things to get used to, some new paradigms, and you have to learn a bit of Lisp (Elisp, actually), but don’t be afraid, it’s not that hard.

Is this just a phase that I’m going through? Will I get smothered in parentheses and return to Vim? Maybe. But for now, come with me, learn a little bit of Lisp, and have some fun.

Sharpening Your Blades

The “toolbox” metaphor often used to describe a programmer’s knowledge, favorite software, shell scripting tricks, and so on, is a convenient one. The skills and utilities that a seasoned programmer brings to bear on any given problem is much the same as the craftsman’s physical collection of implements; selected carefully, representative of the craftsman’s preferences, and wielded with precision borne from experience.

We can learn much from these parallel concepts. In the same way that a builder must keep the blade of the saw sharp, so must a programmer focus some effort on sharpening the “blades” of his or her tools and techniques. This is not a post about education or learning new algorithms or solving ridiculous code katas every day. This is a story about chainsaws.

Master Vim Registers with CTRL-R

Vim’s registers are incredibly powerful. You use them all the time when you yank and put text or record macros, but are you using CTRL-R (in insert mode)? If you aren’t, you’re missing out on a huge efficiency boost! I will show you what CTRL-R does and how it can make you faster and give you even more uses for Vim’s registers.

Why You Should Give ZSH Another Try

If you’re already a fan of “the Z shell” (zsh), you may not need to read any further. If, however, you’re like me and have spent years in the Bourne Again shell (bash), it might be time to re-evaluate your choice.

I have used bash for a long time and reached a fair proficiency level in it. I was doing things like looping over program output, filtering it, using utilities like seq and wc all the time. I could re-run commands from my history in more than one way and reverse-search them with Ctrl-R. None of this was news to me.

But then someone told me about this Z shell configuration package called “oh my zsh,” and I decided to dangle my toes into the waters of the Z shell and see what it’s all about. After all, the OS X terminal drops you into zsh by default; there must be something to it.

I’m never going back.