Modern IDEs are magic. Why are so many coders still using Vim and Emacs?

The endless war between Vim and Emacs users has continued ad nauseam over the years. It's less a war at this point than a grumbling shuffle of ingrained habit and stubborn resistance to change.

Article hero image

Developers are a finicky bunch. Like a dog refusing to walk on wet grass, there always seemed to be a bit of resistance to changing up a routine. We love what we grew up with, be it Star Trek jokes, Vim, or Emacs.

The origins of this war harken back to Usenet groups in the 1980s, a time when Vi and Emacs were the primary tools used for coding. Emacs, as we well know, is a “maze of twisty little passages, all different,” (an old programmer’s joke that came from the game Colossal Cave Adventure) while Vim (and Vi before it) offers an arrow-controlled universe of keyboard shortcuts. Both are used in coding, editing, and administering systems. And, though we hate to say it, both have reached a point where neither seems to really want to fade off into the sunset.

The endless war between Vim and Emacs users has continued ad nauseam over the years. It's less a war at this point than a grumbling shuffle of ingrained habit and stubborn resistance to change. Vim and Emacs users, once at each other's throats, seem to have implemented each other's keybindings (a thing they actually do) to take on a common enemy — any modern IDE.

Vim: The high availability IDE

The consensus among many Vim/Emacs users creates a picture many tech users from a certain generation would be familiar with. As my father would attest, using his Microsoft Zune long after its support ran out, if it ain't broke... While there are many IDEs on the market, there's no reason to use one if you don't have to use one. It's the same reason I am still using Notepad to compose and not some fancy text editor or CMS tool. It just works.

"The reason I avoided IDEs to begin with was that back when I was getting into Vim, like a decade ago, it was an extra license to look into," says Vim user John Carter (not of Mars). "Since then it’s become a question of 'code speed.' If I start with a new IDE or even switch to something like Emacs, I’ll slow down. On an emotional and professional level, I can’t really afford that. It takes energy to pivot to a new editor. I don’t have that energy. I got the job, a family, and side projects. It seems silly but that kind of pivot takes energy."

Vim is always available. Any Linux machine has it. Vim has a small footprint, low latency, fast startup, allows for more screen space, customizable and most importantly, once the muscle-memory has been ingrained, it's nearly impossible to switch to something else.

Continues Carter: "Our fingers are often the bottleneck between thinking up code and getting it in the app, so that’s where folks look to optimize shortcuts."

Take Atom, one of the more popular IDEs/editors. Atom is a free, open-source text editor that bills itself as being "hackable to the core," allowing for multiple customizations. It has cross-platform editing, four UIs, eight syntax themes and integrates with HTML, JavaScript, CSS, and Node.js. Most importantly for users who didn't start coding in the last five years, there is a Vim Mode package. This has led users to literally turn Atom into Vim, unable to let go of the past, unwilling to fully embrace the future of code editing.

Most IDEs create entire worlds where developers can create, but creating requires configuration. It takes time to adjust that world, to play god, to create shortcuts and hotkeys, to get used to different command structures and UI. While a coder could sit down at any terminal and begin working in Vim, that isn't true for any IDE. Further, IDEs are often too much tool for the job. Beginning programmers are much better served by simple text editors vs. massive programming behemoths.

As coders' careers evolve less through their expertise than who is signing their paychecks, there is always a constant code editor available to them regardless of which IDE the company prefers. It could be seen as an act of willful defiance or just personal preference, but text editors are always there.

"Primarily it's about ubiquity," says BSD runner Tim Chase. "I can sit at any Unix-like terminal (Linux, BSD, Solaris, whatever), type 'vi' (or 'ed') and have a powerful editor that works even if my terminal isn't configured quite right (e.g. sending certain keys or key combos) and without needing to install anything."

Familiar and comfortable

It's this type of comfort that has kept whatever perceived war between those still using Vim or Emacs and the prospect of using IDEs going for as long as it has. It’s mental mom’s spaghetti (or insert your comfort food here). Vim and Emacs are always there for you, cozy, calm and willing. While an IDE is some weird new food with all kinds of exotic ingredients that requires tenacious and irrational picking with the fork to get it just the way you want it. The disconnect is apparent and, at this point, understandable.

There is some shiver of recognition among developers though that perhaps switching to a full IDE is not as unbearable as it sounds. There is a resignation in finally realizing that in order to do the job, you use the tools available to do the job, no matter what those tools may be.

“I say, whatever helps you get your job done, use that,” says not that Tom Hanks. “Sometimes the more modern IDEs can get in the way, other times they are indispensable. Visual Studio, for example, has massive performance issues when there are too many files associated with a project file. The entire application becomes very sluggish. A few years ago when I used PyCharm for Python development, it would sometimes become ‘confused’ and give bad feedback on its syntax analysis. Basically, it was making you think you had made a mistake when in fact everything was ‘fine.’”

That said, if you’re new to programming, a modern IDE could be helpful. With code completion, Git control, and even automatic deployment systems, modern IDEs are a Swiss Army Knife of features. And, like most Swiss Army Knives, you don’t have to use all the features to find them useful, especially if you’re just starting out. Many of us won’t use, say, the hole punch or the toothpick, but it’s nice to know it's there.

Whatever war might be raging behind the screens of coders between Vim, Emacs, and IDEs really doesn’t matter. Vim and Emacs aren’t going anywhere anytime soon, no matter their antiquated status in modern development environments. IDEs will keep improving, keep launching, and serve an ever-growing segment of young developers who were never forced to thrive in Vim or Emacs environments. The best advice to anyone struggling with choosing a preferred program is to just use the tools available to get the job done. Or, as the popular 20th century poets TLC so deftly declared, “Don’t go chasing waterfalls, please stick to the Vims and Emacs that you’re used to.”

Login with your stackoverflow.com account to take part in the discussion.