July 3rd, 2024

Modern IDEs are magic. Why still use Vim, Emacs? (2020)

The enduring Vim vs. Emacs debate reflects users' resistance to change and preference for familiar tools. Vim's simplicity and customization attract efficiency-focused users, while some find switching to IDEs challenging. Personal preference determines the choice between traditional editors and modern IDEs.

Read original articleLink Icon
Modern IDEs are magic. Why still use Vim, Emacs? (2020)

The ongoing debate between Vim and Emacs users persists despite the prevalence of modern IDEs. The rivalry, rooted in the 1980s, reflects a resistance to change and a preference for familiar tools. Vim's simplicity, availability, and customization options appeal to many users who prioritize efficiency and muscle memory. Some developers, like John Carter, find it challenging to switch to new IDEs due to the learning curve and potential slowdown in coding speed. While IDEs offer advanced features like code completion and Git control, Vim and Emacs remain popular for their reliability and ubiquity across different systems. The choice between text editors and IDEs often boils down to personal preference and comfort. Ultimately, the advice is to use the tools that best suit one's workflow, whether it's the traditional Vim and Emacs or the feature-rich modern IDEs.

Link Icon 5 comments
By @Zambyte - 4 months
I'm someone that started out on fancy IDEs roughly 10 years ago, switched to vim roughly 6-7 years ago, and then switched to GNU Emacs roughly 4 years ago. At this point I'll probably only switch away from Emacs if it is to another Emacsen, ideally one Scheme based (I have even toyed with the idea of writing this myself). Happy to answer any questions about the each and my transitions.
By @welkinSL - 3 months
I was mainly using the now sunset Atom (VSCode forked from Atom) back in school and a little bit Emacs 28 when using terminal.

With the built-in custom it is not too difficult for me to make the switch after Atom got killed by Microsoft. I can't imagine how difficult it must have been back then for new users before the easy customisation features. It is a good decision by the maintainers. I probably would have gone for VSCode otherwise.

Org-mode is also another killer feature that I chose Emacs over VSCode. Now I do work management, literate programming, and typesetting via LaTeX in org-mode.

By @logicprog - 3 months
Incidentally, I stumbled upon this post a few months ago and was deeply frustrated by it. The depiction of anyone who doesn't use this author's preferred tool for text editing as stubborn backwards idiots too set in their ways to change, who simply don't know what this author's favorite tools could offer, reeks of condescension and hubris. It also ignores that many people switch from IDEs to things like NeoVim and Emacs, so it can't just be people who've been using those editors for years and are too set in their ways to change — although I'm sure this author would have a snide dismissal for those people too, like accusing them of being hipsters that "just want to seem cool and hacker-like."

Meanwhile, the reality is that many of us who use these text editors are fully aware of the power that IDEs can provide. For example, I regularly use Android Studio for Android app development precisely because, for that kind of extremely complex build system and heavyweight language and framework, with that much boilerplate and that many forms to fill out, IDEs are hard to beat.

But, and this is what this person ignores, IDE do come with trade-offs: greater complexity, resource usage, higher lag and startup times, and inferior pure text editing tools (and no, a vim plugin won't help). Most importantly, with a full-on IDE, you typically lose a whole lot of flexibility — IDEs typically are much less configurable and adaptable to different workflows and new features, or even just various customizations that a user used to a regular text editor might want to make. IDEs are also typically highly coupled with the language and the build system they are designed for, such that they typically only work for a specific language or two. If you regularly use multiple languages for your job or hobby projects, then if you wanted to use a full-fat IDE, you'd have to install multiple versions, or somehow wrangle the IDE into supporting all of those languages simultaneously, which is a difficult prospect. Not to mention that it would be awkward and burdensome to attempt to use a full-fat IDE for something like word processing or note-taking because of how targeted they are at a specific language and its build environment, whereas a classical text editor is great at those things, because that is part of what they were designed to do before WYSIWYG word processors came along.

Meanwhile, in comparison, a text editor like NeoVim or Emacs can be equipped with 70% of a full IDEs capabilities through things like (using emacs packages here just because it's what I know) vterm, magit, treesit, lsp-mode, and dap-mode, as well as per-language modes for the build system and such if needed, and in return, even a relatively slow and heavy weight text editor like Emacs will give you less resource usage, better performance, and much greater flexibility, both in customization and in the ways that you can use it. And you can see that this is something that plenty of people actually want, instead of just some stubborn and dyed in the wool people who've been using vim or Emacs since the 70s or hipsters that want to use something old school for cool points, because there are plenty of brand-new IDE-lite text editors, like Visual Studio Code and Zed, that people flock to in huge numbers! I certainly think if anyone uses vim or emacs completely vanilla with no completion and code actions and stuff like that, they may in fact be just a stubborn old timer, but that isn't the majority of people using either of those editors anymore, most use them as an IDE-lite experience just like VSC.

But most importantly, I think what the author of this post is fundamentally missing is that not all languages require a heavyweight IDE: in some languages and build environments you can reach productivity equivalent to an IDE user's just using a standard text editor, if your build environment doesn't require the equivalent of filing and submitting a stack of tax forms to function properly and your language isn't the equivalent of bureaucratic legalese. The full power of IDEs is only really made necessary by a certain type of problem and environment that isn't universal. IDEs are like huge, powerful construction equipment, sometimes you just don't need something like that.