Skip to main content
  1. Posts/

The 5 Stages of Vim: A Humbling Experience

·4 mins·

As I start typing this post in my editor of choice (spoiler alert, it’s neovim), I can’t help but think about where I was just a few months ago. Blissfully ignorant and content in what I thought was the only obvious choice, VS Code.

To me, vim was something to check carefully for when copy/pasting commands. It had to be delicately replaced with nano or risk rebooting the server. I had no idea what it was or why anyone would use it.

Stage 1: Ignorance

VS Code is great, it had everything I could possibly want. And if it didn’t, there was an extension for it. I was familiar with the shortcuts and the interface, and I could run and debug my code with a single click.

My configuration was carefully curated, I had a theme that I liked, and I had a few extensions that I couldn’t live without. I was happy, I was productive, I was ignorant.


Stage 2: Curiosity

I started watching videos from a creator called ThePrimeagen - a charismatic and entertaining Netflix engineer who was clearly passionate about the topic. Watching him move so gracefully through a file, I couldn’t help but wonder if I was missing out on something. I was happy, I was productive, I was curious.

Stage 3: Denial

I decided to give it a try. I installed neovim, and opened up a file. I’d seen enough videos to know that I needed to start with VimTutor. So I did.

THIS IS AWFUL. How could this possibly be productive? You’re telling me that instead of clicking where I need to go, I have to spam hjkl until I get there? And what’s with all these weird commands? :wq? :q!? :wqa? This is ridiculous. I quit.

This cycle repeated itself a few times. Something would spark my curiosity or inspiration, and I’d jump head-first into Vim, get frustrated, and go back to VS Code.

I was happy, I was productive, I was in denial.


Stage 4: Embracing the Suck

I decided to give it one more try. I was going to stick with it, no matter how much it sucked. I was going to learn Vim, and I wasn’t going to give up.

This is always easier said than done. Really sucking at something is hard. It’s frustrating. It’s humbling. It’s uncomfortable. But it’s also the only way to get better.

Growing up, I was pretty good at most things I tried. Sports, school, music. Generally, things would come to me pretty easily. What I’ve noticed now that I’m in the beginnings of adulthood, is how big of an impact this has had on my adult life. If I don’t pick something up almost immediately, there’s a good chance I’m not trying it again.

This has led to missed opportunities, unfinished projects and a lot of wasted time. I’ve slowly started to realize that the things that are worth doing are the things that are hard. The things that are worth doing are the things that you suck at.

But this time, I was going to stick with it. I was going to embrace the suck. I was going to learn Vim, and I wasn’t going to give up.

I was unhappy, I was unproductive, I was learning.

Stage 5: Enlightenment

I’m not going to lie, I’m still not great at Vim. I’m still learning new things every day. But I’m getting better. I’m getting faster. I’m getting more productive.

I wrote my own configuration from scratch. I have a theme that I like. There are several plugins that I now can’t live without. There are things I’ve learnt throughout this process that I would have never feasibly come across if I’d stuck with VS Code. I have a greater appreciation for open source, and all the hard work that goes into maintaining the software that powers the world. Most importantly, I’m thankful to myself for sucking at something long enough to see the results.

I’m happy, I’m productive, I’m grateful.