Braedon Watkins

Neovim Is a Piece of Junk

I've been using Neovim for a few months now and I like it a lot, but I don't think it's perfect. My goal is to find a clear and concise way to explain my complicated feelings about Neovim by exploring what I believe it does and doesn't have going for it.

I will be writing from the perspective of a software developer coming from VS Code because that's what I did. I'm not comparing to Emacs or anything like that.

Time

The first thing you'll see about Neovim online is how much time you'll save. While I think this is a good point, I wish people stopped treating this as the best and only reason to use it.

The first and most common time-saver you'll hear about is not having to move your hands from your keyboard to your mouse. Depending on how you set up this Fermi problem you end up saving something from a few days to nearly a year over the course of a full career as an individual contributor. 1
Almost as common, people talk about the "mental load" that comes from switching between keyboard and mouse. I'm kind of lukewarm on this. On one hand sure, working memory can only hold N things and when you introduce N+1 that might get annoying. On the other hand, if you work as a software developer, expect a salary north of 80,000 USD, and say that you got overwhelmed because you had to move your hand a few inches 2 you have to understand my skepticism.

A less common argument in favor of Neovim's speed that I wish I heard more of is fluency. Being able to string motions together, like what you might see in vimgolf, makes the editor smoother if not faster altogether. This includes, of course, the beloved macro. I'm not sure if I can reason about how much time is saved from this but, before Neovim, I would use something like a bash script if I had to make some large and programmatic edit. This, of course, took forever. In theory you might be able to outsource similar work to LLMs but depending on the edit that might take longer still, with the additional benefit of failing one fifth of the time and having less fun.

Things seem peachy at this point. I can welcome all the new Neovim purists and tell them to throw away their mice and hit macros like hadoukens because they might be able to go on one more vacation before they retire. 3 This should feel like a huge win but I feel kind of meh about it? I think this is for two reasons:

  1. Neovim brings up new annoyances, even time sinks, that negate some of the gains we make here
  2. I can't help but think about how I would get similar results by going back in time and convincing myself to never play League of Legends or something like that. 4

Unfortunately, I can't go back in time so we'll have to address the first point.

A Piece of Junk

I knew I wanted to write this post when I read a Hacker News comment criticizing Neovim for how janky it is. I read this while in the death throes of managing a busted LSP and it honestly got me to second guess everything. I wanted to refute them because I knew I liked Neovim, but I couldn't disagree with their claims in good faith. I was convinced that I was losing all my precious time fixing a tool that is fundamentally unintuitive and broken i.e. A Piece of Junk ™

In fairness, I still think Neovim is unintuitive for newcomers. The motions, the modes, the plugins, the settings everyone overrides (I'm looking at you absolute line numbers). A lot of things need massaging before you can really feel like this is a worthwhile editor. The only defense of Neovim I have here is that you can probably master it, and whatever pieces you don't want to master you can just configure away.

As for Neovim being broken, I came around to mostly disagreeing. I know, I started this by talking about my busted LSP. But honestly, the few times my config has messed up it was because I did something dumb, including the aforementioned incident. Maybe I've gotten lucky that an update hasn't killed my setup yet, maybe it's skill issues all the way down.
Reflecting on this, I think the reason that people perceive Neovim as broken is because they've never had an editor that could break. I can sympathize. However, I think if you're a serious programmer you won't screw up your environment that bad. You're not going to enter a fugue state and run sudo rm -rf / are you? Track your config in git, read the docs if something confuses you, if that also confuses you then ask someone for help, and use your massive programmer brain like you always do. With great power over your text editor comes great responsibility.

Editing the Editor

When a friend asked me why using Neovim is worth it to me I figured out how to write the post that was rattling around in my head. After floundering for a few minutes I told them that, far and above, the number one reason I use Neovim is because I can edit the editor.
Maybe there's some anti-capitalist, anti-imperialist, cancer-curing message in there somewhere which might be exciting to you. But it's about the personal freedom of it. You get to make it yours and that should sound FUN.

You may "lose" time here just like learning motions or fixing mistakes, but the difference is that you should enjoy this a lot. Sure it's fun because you're personalizing it but also because you're a programmer who is programming the thing that makes the programs! That probably should be fun for you! This argument should come pretty naturally:

The Missing Connection

Remember, I'm in search of a good encapsulation for how I feel about Neovim overall. We need something that encompasses:

OH. YEAH!

NEOVIM IS THE MILLENIUM FALCON!

How it feels to use Neovim

Yes! The Milennium Falcon IS a PIECE OF JUNK! It's Han Solo's one-of-a-kind, personal, faster-than-yours, Piece of Junk. From now on if someone asks me what Neovim is I'm just going to say "it's like the Millenium Falcon for editing text files" and leave it at that. Maybe I'll just show them this blog post.







If you liked this give it a little upvote so I can know if my writing and opinions aren't shit. kthxbye!

  1. Lower Bound: 0.7s round trip keyboard to mouse, 20 times an hour, for 30 hours a week, in a 20 year career, and eliminates 50% of mouse usage = 2.54 days; Upper Bound: 2s round trip keyboard to mouse, 100 times an hour, for 60 hours a week, 50 year career, eliminates 95% of mouse usage = 344.23 days. Average Case => 173.38 days... To be honest, I thought this was much lower from the napkin math and I'd be happy to be proven wrong but the numbers seem to check out.

  2. inb4 your mom

  3. "erhm ackshually time is not fungible", bite me!

  4. More realistically Civilization & Runescape but I wanna be relatable to my younger Gen Z peers