What bothers me about (neo)vi(m)

I love the idea of neovim. It made vi even easier to use, even more powerful, and what it can do is amazing. I just don’t think it’s the right tool for the job, and some idiosyncrasies of the editor make me not use it although it’s precisely the sort of tool that I need.

What I like about neovim

It’s fast. Blazingly so. It also resource efficient (for a certain measure of what that efficiency means). It can do things that other editors are not able to do. For example to load a 11.2MB JSON file and not complain that it’s too large and it will act as a basic typewriter on it like vscode does. You can configure it to look like a proper IDE, with complex layouts and so on. Nice! You can integrate LSPs with it. And the UI is amazing for it.

Still, I kind of hate it.

What I don’t like about neovim

Neovim is uncomfortable, too opinated of an editor, it’s not easy to understand, to discovery, and not easy to use without pouring months into learning it. Basically, it’s not TurboVision.

No visual cues about important things about the current document

Before you answer „there is a plugin for that” you have to understand that I have a job to do. And that job is not to discover neovim plugins, for certain. Progress bars are there for a reason: we need to see where we are and to navigate some documents.

When those cues exist, they are detached from the focus of the editor. For example, an important cue in vi is whether you’re editing or you’re in dumbcommand mode or whatever it’s called. You know, the thing you press :q! to quit without damaging anything.

Because those visual cues are disconnected from the focus of the user, navigation is very hard for a new comer. How do I find something? Oh, /something? COOL! Why is now something everywhere over my screen? ESCape, ESCape! Why did I get back to the top of the file? What the heck is happening here?

Let’s look first at hjkl. I’ll hear „omg, I don’t have to move my hands” - mah frend, you’re not a steganographer and you shouldn’t be. You’re a glorified HTML and CSS editor, you should calm down about your need to type very very fast. No, what Techlead taught you about what makes a good programmer is false, typing 10.000 wpm is not it. So you can move your hands around, and it’s actually good to do so, keyboards are meant to be used sparringly and judiciously. So, no, I get it, for some it’s a heaven sent that they can move around with those keys, but arrow keys exist and things like page-up/down, home and end are there for a reason. Also, you know, there are well established ways to move from word to word and so on.

The complete detachment from current editing conventions is what makes it really bad. I get it, you want it to work in a limited space. Turbo Vision was not insane about it in 1990. If TVision did it in 1990, and worked splendidly. It had excellent visual cues and you could do all the things that you needed in it. And it followed proper editing conventions, because it wasn’t insane about working on ADM-3A terminals. A 286 was enough.

Editing is counter-intuitive

Selecting, copying and pasting. I know, you can do magic with vi! I don’t need magic, I need copy and paste. Can I get CTRL-C to copy? And CTRL-V to put the copied things in? I can? Oh, I need to… and then… oh! then thaaaaaaat! Ok! Thank you. *quits vim and pulls out almost any other editor*.

Discoverability is non-existant

*Insert favorite joke about quitting vim*.

How do you find out what can you do in a certain context? How to change a certain setting? Which settings are available? How to perform certain actions? What commands are available?

Exactly. *Insert your second favorite joke about quitting vim*.

Excessive cognitive load required

Vi (and variants) is a notoriusly hard to master tool. It takes weeks or months to use it at a level that makes you as proficient as the 2 seconds you need to learn to be proficient in Notepad++. Sure, there’s a wealth of info and „bad habits” that you need to unlearn for vi to become your new standard, and it’s so screwed up that it becomes your new standard and you seek to replicate its idiosyncrasies in every other editor in the planet. It’s a trap, in all honesty, because it creates a wealth of knowledge where there shouldn’t be. You shouldn’t need the equivalent of a full semester of study to edit some files.

There is a shortcut for capitalizing a word you’re on. This is literally the sort of shortcut you just brag about but you use that shortcut like, what, once a year to impress someone? Why is that needed? Why is that a good thing to have? Why is that even a default shortcut?

By the time you are proficient in vi you will have learned vimscript or lua + vi APIs and you are definitely older, sadder and perhaps a bit more disgruntled. By the time you are proficient in something like TVision your coffee is still hot and you can take a two minute break to enjoy it.

Bad defaults

*Insert your somewhat insensitive joke about quitting vim*.

The first impression is what matters. And the first impression is disastruous with vi and friends. Vim improves on that with the offer of starting the tutorial. Neovim improves on this even more. Still the results are disastruous. It takes a lot of work to make it vaguely usable, and it will never be friendly because nobody installs stuff to make their editor more friendly with beginners. Because by the time you know how to configure it you don’t know what it’s like to be a beginner. Your bad habits learnt from learning vi are now your second nature. You can’t unlearn them.

Community

The community around it is enthusiastic, amazing, and absolutely detached from the fact that they are excited about using a glorified version of ed on 12-cores 5GHz machines with graphic cards capable of doing 240fps 4K output. This creates a level of elitism that I don’t necessarily mind but somethimes I find insufferable.

*Insert the very inappropriate joke about quitting vim that you’ll forever regret for ever including and therefore you take it out of the article but people will point to the Internet archive version of your page to unveil your whateverism publicly when you go out of the house.*.

How should an editor look like in 2025?

To be on par with (neo)vi(m) I will explain what an editor should look like in text mode. Take TVision, add it a command mode with ESC for the odd command you might want to give it from time to time, but don’t make it the default mode. Allow the use of a mouse, have proper editing - but those things are already included in your TVision clone. Have a proper file-browser like neovim’s whatever-kids-use-these-days-for-file-browsing, and allow it to appear on the side of the editor.

Have menus that will allow browsing through all the commands before you learn them. Make things easy to discover. Make editing easier. Make editing comfortable for beginners as well as experts. Drop the hjkl elitism. hjkl was a choice out of necessity on a very very restricted terminal where cost was measured by number of keys on the keyboard. You have arrow keys. Shut up.

But the point is to ease the cognitive load required to use your damned editor. It shouldn’t be that hard. In fact, I’m sure that someone in the world has the perfect setup for their editor that would make everyone envious, and they haven’t moved from their cubic 30 keys keyboard for the past 3 years because they can do everything in vi. It’s just that his version of vimscript is no longer supported, and he actually used a language where parenthesis are reversed )like so( because he hates emacs.

*Insert a fun fact about vim, like how typing ESC:q!ENTER will take you out of the editor*.