Controversy about modern IDEs
Home
last change: 2025-12-23

Over the years, I've repeatedly gotten comments about the text editor I use: Vim. Terminal Vim. And it's not that Emacs is better, although I've heard that one once before from a coworker using Doom Emacs. Funnily enough, it has Vim motions. Some comments about my Vim usings have a negative tone to them, and basically come down to sound like the question, "why would you do that to yourself?"

I've used Vim for most of my years using text editors. I used Atom (discontinued in 2022) for tiny while, as well as Visual Studio Code, but I eventually resorted back to Vim for mainly two reasons.

The many IDEs

There are maybe a thousand different IDEs that you could choose from. They all have their different purposes. Honestly, that's just the problem. They are different. For Objective C and Swift development, you must need to use Xcode; for integration with the C# environment, you could use Jetbrains Rider; and there are a lot of other examples that I could give.

These IDEs usually have all different interfaces. There are some with different menus, and even with different keybindings.

I prefer to have a fixed interface. Everything to be the same for each development environment that I'm working with. It allows for muscle memory to take over. The same leader l l keybinding for the Make command, or, as Vim allows, any other compiler. If I'm using Zig, it's the Zig compiler; if I'm using LaTeX, it's the Tex compiler; and hell, if I'm using anything else, a simple Makefile will do for now. It does mean that I'm stuck with the command-line interfaces for each application, but hey, that's already what I'm used to.

Vim's simplicity

Vim is, by default, quite simple. Its motion system is quite intricate, but the base layer is still rather simple if you need it to be. It's easily expandable if you want to work with a new development environment, too, or just want a new ability right from within your favourite text editor.

I have quite a complex Vimrc file that I carry from environment to environment. My file browser is always bound to the same :E and :F commands, my fuzzy finder is bound to control d, I have a directory search tool bound to the :Ack command, and lastly, I even have Thesaurus available, which is the same for every environment that I work with. Even in SSH sessions.

I've made plugins for Vim that I use almost daily:

Vim screenshot