Home

/

posts

/

Why I Program in Neovim

Why I Program in Neovim

Chapter 1: From VSCode to the Search for Something Better

Before starting my programming journey in 2023, one of my first searches was what's the best programming IDE? As you'd expect, pretty much all the videos and articles recommended VSCode. So I went with it. For someone with zero programming experience who had never used an IDE before, why would I try anything else when most people (74% according to Stack Overflow) use and recommend it?

Using VSCode wasn't a bad experience, but it wasn't great either. It's like playing games on a 60Hz monitor. You'd never know what you're missing until you try 144Hz or higher.

Like most programming noobs stuck in tutorial hell on YouTube, I couldn't help but notice content creators using a text editor in their terminal while coding or explaining something. I was curious, but I never tried it or even looked into it.

One day, I got bored of my PC and decided to program on my laptop. It's a slow machine, and running VSCode was a bit laggy. It wasn't a fun experience, especially when I had other apps open like pgAdmin and a browser. So I searched online for a lightweight alternative. That's when I discovered and installed Neovim.

Chapter 2: The Struggle and the Breakthrough

My first half hour with Neovim was horrible. As someone who had always relied on a mouse to use the computer and looked at the keyboard while typing, it was hell, frustrating, mind-numbing, and completely unproductive. I couldn't understand why anyone would use this instead of a normal editor like VSCode. I convinced myself that maybe they just started with Neovim early on and stuck with it out of habit, like those people who say driving manual is the only real way to drive a car. I closed it and didn't open it again.

Days passed, and my laptop's poor performance while coding kept bugging me. It was discouraging, and learning Neovim started to feel like the only real solution.

So, back to tutorial hell I went, watching videos and following along for hours, only for the config to keep breaking again and again. And mind you, I couldn't fix it or even understand the scary red errors Neovim kept throwing at me. I was just a noob with a little bit of JavaScript knowledge. At that point, I had already invested too much time to quit. My ego wouldn't let me anyway. After all, I'm the "tech guy" in my family, the one they call when the TV switches from HDMI to regular TV mode and no one knows how to fix it.

Then, after days of trying to make a config work, I stumbled on a video titled The Only Video You Need to Get Started with Neovim. The guy claimed that all I needed was to copy a command from GitHub and I'd have a working Neovim setup. "Pfft, yeah right buddy," I said to myself. But I ran the installation script anyway and browsed through the config a little.

The config was written with complete beginners in mind. It explained everything, not in some README file, but right there in the code, under each section. Finally, I started to understand why each part was there. I still didn't fully get how it all worked, but at least I wasn't lost anymore.

The name of the config was Kickstart, created by TJ DeVries, one of Neovim's maintainers and a well-known figure in the Neovim community. And just like its name suggests, it really was a kickstarter. Adding plugins to it was easy, Thanks Tj

Finally and for the first time, I was actually enjoying Neovim.

I understand it now meme

Chapter 3: Customization and My Essential Tools

Neovim is now my main programming editor, and I really enjoy using it. At first, learning Vim motions felt hard, but it got easier faster than I expected. After a while, I stopped using the mouse and started moving through code with just the keyboard. It felt smooth, fast, and kind of fun.

What I like most is how much I can customize it. You're not stuck with anything. You choose your own plugins, set your own keybinds, and make it work the way you want. It starts to feel like it's made just for you and how you like to work.

And you can even customize the plugins themselves. If something doesn't feel right, you can change it and use LUA to tweak things, write your own configs, or add new features. That freedom lets you build an environment that fits you exactly. Every small detail can be tailored to match your workflow, down to the tiniest keypress.

I spent a lot of time trying new plugins, changing settings, and making it feel right. Searching online for cool plugins became a habit. It's not just about being faster , it's about making something that feels yours. Neovim isn't just another tool, it feels like my own personal IDE.

My Essential Plugin Arsenal

Here are some of my favorite plugins. I use them every day, and I don't think I could code without them now:

  • Telescope by TjDevries — this is my primary way to navigate my projects in Neovim and switch between files (it's a fuzzy finder with file preview).

  • Oil by stevearc — it's a file plugin that lets you edit and navigate your filesystem in a buffer. I don't know what else to say about it — it's just perfect.

  • Hardtime by m4xshen — it forces you to use Vim motions instead of the mouse or spamming keys unnecessarily. It reminds you there's always a better way.

  • Mason by williamboman — a package manager for LSPs, formatters, linters, and debuggers. It installs everything you need without even touching the terminal. Makes trying a new language easy.

  • Dadbod and Dadbod UI by tpope and kristijanhusak — an extension that lets you run queries and interact with your database inside Neovim.

  • LuaSnip by L3MON4D3 — handles all my snippets. It's super fast, flexible, and works perfectly with completion. I use it if I'm typing the same thing more than once, especially in frontend work.

My Favorite Themes

For themes, these are my favorites: Rose Pine and Gruvbox Material.

Rose Pine Theme

Gruvbox Material

Note: You can find my current Neovim configuration here - it's based on Kickstart with my personal tweaks and the plugins mentioned above.

Chapter 4: Beyond Neovim - A New Philosophy of Computing

I never thought a text editor could change how I work, but Neovim did exactly that. When I first tried it, I was still on Windows and honestly struggling with the setup. Most of the impressive configurations I found online were running on Linux, so I decided to make the jump.

Learning Linux forced me to actually understand my computer instead of just using it. I spent hours in the terminal, breaking things and fixing them again. Through trial and error, I discovered tools like tmux for managing sessions, btop for system monitoring, gnu stow for managing dotfiles, ripgrep and find for fast searching, fzf for fuzzy finding, zoxide for smart directory jumping, the GitHub CLI for managing repos from the terminal, as well as various networking tools and more.

I got curious about how these command-line tools actually worked, so I started experimenting with writing my own. It was partly because I wanted specific functionality that didn't exist, but mostly I was just interested in learning how to build these kinds of programs. Writing CLI tools became one of the ways I learn programming while creating something I'd actually use.

The more I used Neovim, the more I wanted everything to work the same way fast, keyboard-driven, no mouse required. That made me try tiling window managers (i3, hyperland, bspwm) that lets me organize windows without clicking around.

What surprised me most was how well-designed these open source tools are. They are often better than commercial software, and they're free and made by the community. Now whenever I need something new, I automatically look for open source alternatives first. Neovim introduced me to an entirely different philosophy of computing.


This blog post chronicles my journey from VSCode beginner to Neovim enthusiast, and how a simple text editor opened up a whole new world of computing possibilities.