My Constant Struggle with Neovim


Have you ever felt like you are trying to tame a wild animal? A fierce, ever-changing beast that constantly needs our attention and obedience? That’s exactly how I feel about Neovim. It has become both my greatest tool and my never-ending challenge.

Neovim offers a unique experience – a fully customizable and efficient development environment tailored specifically for you. However, this flexibility comes with a constant struggle to maintain and optimize your personal setup.

The main goal of a code editor is to make every aspect of coding efficient.

But Neovim offers something much bigger than that. It gives you the ability to shape it into anything you want with enough effort and dedication. And this is where my struggle with Neovim begins.

Being able to change everything is truly amazing and scary at the same time. I work with many programming languages, frameworks, and different tools every day. This should be as perfect a scenario for a Neovim user as it gets. But the idea that Neovim is like my personal legacy software system I have to maintain is growing more and more onto me.

For instance, at any moment in time, if I get asked:

Are there any problems with your editor?

My answer would be:

YES!

There’s always some tiny, nagging annoyance clawing at my sanity, begging to be fixed. Or a repetitive task that I desperately want to optimize. Or a plugin that broke after a recent change, disrupting my entire workflow. Like the time when I updated a few plugins, and it caused conflicts with my JavaScript setup. I wasted hours debugging and reconfiguring my environment, grinding my teeth and fighting the urge to throw my laptop.

It’s easy to get overwhelmed, and at some point, I did. I once stopped making any changes to my setup, hoping that I could get used to it as is and become efficient with what I have. A silly idea. The software world is always changing:

  • New language features get released
  • New additions to frameworks
  • New technologies I want to work with
  • Work projects constantly change

Nothing in software development is static.

Every 2 months, I dedicate a few hours to deal with TODOs. I don’t maintain a list of TODOs – major problems and improvement ideas are so engraved in me, as I patiently suffer months before finally addressing them. A strange form of self-punishment. I never update plugins just to be on the latest version. Only when it fixes an issue I have or adds an improvement I personally need.

I can’t put off all the little things until later, so I still make little changes here and there that don’t require much time and brain power. It’s a constant balancing act between optimizing my development environment and actually getting work done. An endless dance with the beast that is Neovim.

And yet, despite all the struggles and frustrations, I cannot help but love this wild beast. Because in it’s untamed nature lies the power to create something truly great - a development environment perfectly shaped for my needs. So I keep going, I keep taming, I keep customizing, forever engaged in this never-ending effort that defines the life of a Neovim user.