DEV Community

Cover image for Dear Vim, Thanks for My Configuration Addiction
Thiago Pacheco
Thiago Pacheco

Posted on

1 1 1

Dear Vim, Thanks for My Configuration Addiction

After 5 years of neovim, I am heavily questioning how worth it really is to stick with it.

I've been coding for over a decade now, and I've used many code editors throughout my career. In the beginning, Eclipse was the cool thing to me as it had much more than I needed just one click away (kind of). After transitioning to more PHP and JS work, I was forced to change my code editor to something else, and at that time, Notepad++ and Sublime were my go-to choices, until right after we had Atom and VSCode.
VSCode obviously won the battle of "my best code editor" at the time, and I finally felt like I was flying, coding faster than ever and with all the tools I needed right there. JetBrains products also caught my eyes, and I loved using them, although they were too expensive for me at the time, so I settled for VSCode.

I never even considered Vim or Emacs at the time, because my impression was that Emacs was just too old and wouldn't have the things I needed, and Vim was just the terminal editor needed whenever you SSH into a server or whatnot. Vim seemed just like that tool you are forced to know how to save and quit files because you may eventually have to use it while connected to servers, so I never really understood its power at that time.

It was when I saw a coworker's workflow that blew my mind, jumping and editing things so fast that my jaw dropped. I thought I was fast, I thought I had the best tooling already and that we could not go faster than that other than just improving typing speed more and more. But no! I was not fast at all, I was just ok. Turns out relying on the mouse and clicking around was not at all a fast workflow.
This friend of mine was just using the Vim extension for WebStorm at the time, and he was already much faster that it really inspired me to learn it too.
I copied him! I downloaded WebStorm, installed the Vim extension, and started really learning the navigation and utilities. It was really hard in the beginning to lose my old habits of relying on the mouse, and I was always catching myself using the mouse anyway. As I was just using an extension, I didn't have the full power of Neovim, so relying on the mouse was still required.

Switching to Neovim

After a while, I started consuming more and more content about developer productivity and learning the real power of Vim, specifically using Neovim. ThePrimeagen was the main reference that made me switch to Neovim at the time and really try to stick to it.

Switching to it was not a comfortable journey.
Learning so many different types of configuration steps and tools I needed was a battle, and I quickly realized that I didn't know nearly enough about basic CLI tools.
I decided then to fully switch to Neovim at the time and force myself to stick to it to finally overcome the need to rely on the mouse when I didn't remember a command. I am so glad I did!

Fully switching to Neovim made me understand much more about terminal tools and utilities that made my life so much easier, finally learning that everything I needed could be done right there in the terminal.
I was fascinated by this new way of developing, and I dove super deep into all the possible configurations, tooling, plugins, etc., and I started creating various types of configurations.
I used many Neovim distros until I finally created my own config from scratch, and that felt amazing. I finally had a dev environment tailored to my own needs, my own shortcuts, and the exact workflow I wanted to follow.

The Addiction

I was so hooked on constantly improving my dev workflow that it quickly became an addiction to me. I caught myself spending valuable hours tweaking configurations, testing plugins, and even building my own custom plugins for Neovim. I was looking for perfection!
But, as you may have heard many times, perfect does not exist!

My extreme interest in getting to a utopic configuration was consuming too much of my time. There was always one little thing that I would like to do differently, or some new revolutionary plugin would pop up and I'd feel the urge to try it out, or maybe some specific workflow at my job would raise that interest in myself to find shortcuts to it.
I got so addicted to this constant config improvement that I switched to Arch Linux and went deep into custom configuration for literally everything. I tried various Linux distros, and NixOS was very appealing, but I settled for Arch because it felt like a good middle ground to me.

Overcoming the custom configuration addiction was hard, but after a while noticing this pattern, I decided to simply settle with the config I had and limit the amount of time I spend on this unachievable dream state.
I set a maximum number of hours a week I could use to play around with these things, and that was very helpful. I was finally getting valuable hours back, and the great benefit I got from this was that those extra hours were dedicated to studying something else, since I was already very used to spending extra time with my laptop anyway.

I still feel the urge to custom config things very often, though I try really hard to stick to my limit and settle for what I have.

Switching back to VSCode / Cursor?

Over the years, the shortcuts and configuration for a more keyboard-centric workflow on VSCode got so much better that I started having this conflict of a possibility to go back to it. I decided to spend some time trying to make VSCode just like my Neovim config, and I got really close.
Most things now were 1:1 equivalents on my Neovim and VSCode config, but whenever I tried to use VSCode, I quickly missed the fact that with my Neovim workflow, I had everything I needed right there in the terminal; I barely needed to switch windows, especially if I was working on a backend feature only. So again, I decided to stick to Neovim only and leave aside this urge to make VSCode "better".

After changing jobs, I had access to a Cursor license, so I decided to explore a VSCode flavor once again. Here we go again on this constant journey of custom config!
Luckily enough, Cursor is just a VSCode fork, and my existing config just worked out of the box, and the transition to it was simple enough. I was now using almost the same Neovim config within Cursor, with better and faster code completions plus all the chat features and context awareness that it provided, and that felt really nice, though it was not exactly the same as in Neovim because it still forced me to use the mouse from time to time. I was once again battling this tradeoff of a keyboard-centric workflow and tailored config vs. easier to configure and richer tool that Cursor seemed to be. Could I be ok with using the mouse from time to time? Could I live with some weirder shortcuts that needed to be different depending on which editor window is selected? Would it be worth it to spend more time again tweaking the Cursor JSON settings to be exactly like my Neovim config? Should I just settle for its defaults and fully switch?
So many questions in my mind once again that I found myself with that utopic custom config dream on top of my mind.

I was able to get a close enough configuration on Cursor, so nowadays I find myself working either on Cursor or Neovim depending on what I feel like each day.
Especially when working with Python, using Cursor feels better nowadays just because the LSP works much better in it out of the box, compared to Neovim, but in my personal projects, I continue to use Neovim exclusively.

The question remains unanswered on my end unfortunately. What about you? Have you found your ideal editor? Share your thoughts in the comments!

Top comments (1)

Collapse
 
smjburton profile image
Scott

I'm currently working with Sublime Text, but considering pushing myself to learn Vim. Even though you're exploring Cursor, do you still think it's worth the time investment to learn Vim (Neovim) for the productivity gains?

👋 Kindness is contagious

If this article connected with you, consider tapping ❤️ or leaving a brief comment to share your thoughts!

Okay