← BlogRead on Medium ↗

Vim, Emacs, and 24 Years of Not Picking a Side

· 9 min read

Vim, Emacs, and 24 Years of Not Picking a Side

Every few weeks the editor war flares up again. Vim or Emacs. Pick a tribe, defend it, mock the other. I’ve watched this argument run for over two decades, and here’s the quiet thing nobody in the comments admits: most of the people fighting are using both.

Half the “Vim users” I know are sitting inside Emacs with Vim keybindings. Half the Emacs converts I know got there because of Vim. The two camps overlap so much that the war is mostly people arguing with a slightly earlier version of themselves.

I’ve used vi since 2002. I still use it today. And I write everything in Emacs. Both of those are true, and neither of them is a contradiction.


vi never left — it just found its place

I don’t use vi as my IDE. I haven’t for years. But it’s still on every server I touch, and that’s exactly where it earns its keep: a quick edit over SSH, a config file on a box where I’m not going to set up Tramp and a whole Emacs session just to change one line. You drop in, :wq, you’re out. Nothing to install, it’s already there, and 24 years of muscle memory means I don’t even think about it.

vi, where it still wins: a fast edit on a server, nothing to install.
vi, where it still wins: a fast edit on a server, nothing to install.

That’s the part the war misses. vi isn’t my daily driver and it isn’t dead — it’s the right tool in a specific place. Keeping it doesn’t make me disloyal to Emacs. It makes me someone who uses what fits.


Vim was the bridge into Emacs, not the enemy

Here’s the irony at the heart of the whole fight: Vim is what got me into Emacs.

When I finally moved my real work into Emacs, I didn’t arrive as a purist. I came in through Doom Emacs with Vim keybindings turned on. I tried a pile of distributions along the way and stayed with Doom. The Vim bindings meant I didn’t have to throw away years of muscle memory on day one. I could be productive immediately and learn the Emacs underneath at my own pace.

And the things that kept me were small and concrete. I keep LazyGit under hand for quick, throwaway moves — but the one that actually won me over is Magit: Git living fully inside the editor, every action laid out and formatted, not a separate window I tab away to. It even collects every TODO and FIXME from across my code straight into the Git view, and I’ve wired it so a commit won’t go through while the important ones are still open. That’s the real difference — it isn’t a git client bolted onto an editor, it’s the editor and the repository knowing about each other.

Magit: Git inside the editor — it even gathers my code’s TODOs and won’t let me commit over the open ones.
Magit: Git inside the editor — it even gathers my code’s TODOs and won’t let me commit over the open ones.

So when someone frames it as Vim versus Emacs, I just think: Vim handed me the keys to Emacs. That’s not a rivalry. That’s a relay.


Then I changed my bindings — slowly, over a year

About a year into Doom, I did something that sounds like heresy: I started moving off the Vim keybindings and onto standard Emacs ones.

Not overnight. I didn’t flip a switch and suffer. I changed them gradually, over the better part of a year — one chord at a time, letting the old reflex fade as the new one settled. Some weeks I’d switch one workflow and leave the rest. It was the least dramatic migration I’ve ever done, and I’m genuinely happy I saw it through.

I’m not saying standard bindings are “better.” For me they ended up fitting the way Emacs actually wants to be driven, and once I stopped translating everything through a Vim layer, the whole thing got simpler. But that’s a personal outcome, not a verdict.


The real reason it worked: the keyboard

Here’s the part I never see in these debates, and it mattered more than any philosophy: I could only make the switch after I moved to a split ergonomic keyboard — a Kinesis Advantage.

The classic complaint about Emacs bindings is the “Emacs pinky” — all that reaching for Ctrl. On a normal keyboard, it’s real. On the Kinesis, Ctrl (and the other modifiers) live in the thumb clusters, under the strongest, laziest fingers I’ve got. Suddenly C- anything wasn’t a stretch — it was a thumb press. The chords that drive people to Vim bindings stopped hurting.

Ctrl under the thumbs. This, not willpower, is what made standard Emacs bindings comfortable.
Ctrl under the thumbs. This, not willpower, is what made standard Emacs bindings comfortable.

So my move from Vim bindings to Emacs bindings wasn’t a change of heart. It was a change of hardware. The keyboard removed the one real ergonomic reason to avoid native Emacs keys. If you’ve ever bounced off Emacs bindings, I’d bet your keyboard had more to do with it than your willpower did.


It even pays off outside the editor

One unexpected bonus: macOS uses Emacs-style bindings by default in almost every text field. C-a, C-e, C-n, C-p, C-k — they just work, in Mail, in Slack, in the search bar, in Terminal. Once the Emacs keys were in my fingers, half my Mac started speaking the same language. The skill didn’t stay trapped in one app.

Vim, Emacs, and 24 Years of Not Picking a Side


It’s not only Vim — and Emacs keeps outliving the challengers

Here’s the thing: Vim isn’t even Emacs’s main rival anymore. Every few years a new tool arrives that’s finally going to make Emacs obsolete. VS Code was going to do it. Sublime before that. Obsidian (only as the best Finder for MacOS), Notion, and Logseq came for the notes. The JetBrains IDEs for “serious” development. Each one gets its moment as the Emacs-killer, and people line up to declare the old thing dead.

And Emacs is still here. Not out of nostalgia — because it’s genuinely that powerful. It doesn’t really compete with those tools so much as absorb what they do. Whatever workflow you can describe, you can usually bend Emacs into it, and then it’s yours: in plain text, no subscription, no company that can take it away.

I’m the proof, at least for myself. I used to pay for IDEs — PyCharm, and whichever other JetBrains tool a given project seemed to need. They’re gone now. All of it lives in Emacs: writing and editing, Git, debugging, my notes and agenda, this very article. I even play chess online without leaving it. One environment, shaped to me over years, instead of a drawer full of separate apps each demanding its own login.

PyCharm gone, and even chess lives here. One environment, fully mine.
PyCharm gone, and even chess lives here. One environment, fully mine.

That’s why the battle keeps missing the point. Emacs doesn’t win by beating Vim, or VS Code, or Obsidian. It wins by quietly doing all of their jobs in one place you fully own — and still working, years later, long after the latest challenger’s funding runs out.


Stop fighting. The tools are quietly changing your day anyway.

Here’s where I’ve landed after 24 years: the war is the only waste.

vi on a server. Doom Emacs as my IDE. Vim bindings as the bridge, then native Emacs keys once my hardware caught up. macOS borrowing Emacs keys in every text box. None of that is a side I picked — it’s just the right tool, in the right place, at the right time, and each one quietly reshapes how I work.

That’s the real story under the editor war: these tools change our day, day by day, and they keep evolving while people argue about which flag to wave. Use vi where vi wins. Use Emacs where Emacs wins. Borrow the other camp’s keys if it helps you cross over. The only people who lose are the ones who spent the time fighting instead of working.

But the deepest reason to drop it is simpler than any feature. Our hours are finite, and a war — any war, even a small one about text editors — only ever burns them. Every hour spent defending a tribe is an hour not spent building something, shipping it, helping someone with it. The tools exist so we can make things; point the energy there. Spend it executing, not arguing — on work that leaves this corner of the world a little better than you found it. We already have more than enough real wars. We don’t need to invent small ones over our keyboards too.

I used Vim to reach Emacs, and I still keep vi close. After two decades, that’s not a contradiction. It’s just not picking a side — it’s choosing to build instead of fight.


Thanks for reading. Follow on X: https://x.com/maxclaxOS

Dotfiles: https://github.com/maxclax/dotfiles

Related: