A year of `neovim` has been good to me

— 4 minute read

My initial commit on my first "neovim config" repo was September 26, 2023. While I was learning vim motions and dabbling with configs a little bit before then, that repo feels like a good milestone for what counts as "a year of doing the thing", so I'll go ahead and declare my first vim birthday (🎂)!

I'm currently the sole engineer in my org that uses a terminal-based editor as their main development tool, which I take as proof that my choice isn't a wise one. Indeed, when I chose to try it out back in September last year, I said I would dip my toes in as a learning aid, with the intention to then return to something more sensible like IntelliJ.

So, what did it aid me to learn? Is it something I'm going to stick with?

It forced me to learn vim motions permalink

I'm now good at vim motions! Surprise, surprise, I also now appreciate the massive value of an ergonomic text editing system. Being able to edit a document without moving far from the home row has been a massive boost to my productivity and my wrists.

I also think editing with motions is fun. When I have a complex but repetitive task in my code editor, I enjoy puzzling over how to do it using a macro and I save some time in the process. Reducing the time, space, and effort required to get my thoughts into an editor has given me a whole new sense of flow and given my brain more space to think about logic over editing.

Did I mention how portable it is? When I do move back to a conventional editor, I'll bring vim motions with me - and I've even started to appreciate sites that implement vim motions (shoutout to Duck Duck Go).

It forced me to get real comfy in the terminal permalink

On one screen, I have a tmux terminal window. On the other screen, I have Arc Browser and Slack. For most of my work days, that's all I need. I can flip between projects with unbelievable speed, ignore the mouse, and automate most of my repetitive dev work.

Clearly, that's not all neovim. I've had to invest time into learning tmux, scripting, my dotfiles, and all the other commands/tools I've put on my Mac. That being said, I'm confident I wouldn't have taken the time to set up and learn all that if I wasn't in the terminal all day with neovim anyway. Making the terminal a first-class citizen on my Mac, not just a window you open occasionally or a pane in VSCode has helped me really get stuck into it.

Once again, portable? I could completely gut my neovim config and I'd still be 10x as powerful with a terminal as I was a year ago.

It forced me to improve my development workflows permalink

When opening your editor takes 93ms and editing becomes as snappy as neovim is, all your auxiliary development workflows start to feel sluggish by comparison. Do I need to open a web app for this? Can I avoid this with a script? Can I extract data X automatically? Minor frustrations to me at the speed I was editing last year feel painful when the actual work goes faster,

Perhaps that's my natural development as an engineer, but I think a large part is neovim making me appreciate how much faster I can do my work by investing time and effort into my tooling.

Maybe I'll stick with it a little longer permalink

Now I've written that all out, I'm struck by how much juice I've gotten out of squeezing this particular lemon for a year. It hasn't always been a perfect experience, I've had my fair share of frustrations configuring my setup, and eventually I'm sure I'll want to hand off most of the work of that configuration to a company like IntelliJ. For now though, I suspect I'm sticking with it. If for no other reason (besides the ones above) than I enjoy it.