My Journey into embracing Neovim as my PDE

Sidharthan Chandrasekaran Kamaraj
The Bug Shots
Published in
5 min readMay 10, 2024

The First Encounter

It all started in 2016 in my first company. I wanted to edit a shell script in a Virtual Machine where my application was deployed. The manual instructed me to log into the terminal via PuTTY, run vi <script_name>.sh, and then add a line to it. I followed the same, only to discover that I couldn't do Ctrl+C, Ctrl+V, or Ctrl+S, nor was I able to quit. Frustrated, I quit PuTTY and logged in again. I was like, "Yuck, what the hell is that editor?" and used Nano to edit the file. I thought, "Why don't they have Nano as the default editor in Linux?"

The Intriguing Encounter

In 2020, when I started working on NGINX, I was paired with a Senior Engineer. During my onboarding (via Zoom call — during COVID times), he was explaining the codebase to me. To my astonishment, instead of opening an IDE like a JetBrains product or VSCode, he opened his iTerm2, navigated to the project folder, and opened Vim. I was expecting a movement in the mouse pointer, but man, he was flying through the codebase like I’ve never seen before. At that moment, I thought, “I want that.”

The Initial Struggles

So, I started looking at tutorial videos and documentation, but it was hard for me totally. I tried to hang on, but over the week, I lost interest (it was hard to begin as a total noob). My workflow continued to be Goland or VSCode over the year. I again gave it a try in 2021 (went into the YouTube rabbit hole one night and ended up in a Vim tutorial). I configured the editor as per the tutorial (used Vim Plug) and found it comfortable to edit files. I spent the next couple of weeks forcing myself to use it as my primary editor. At the end of the sprint, I saw that I didn’t finish up my tasks. It dawned on me that maybe I’m not that kind of guy, and it took a total nerd to use Vim as fluently as an IDE, which I’m used to. So, I stopped using it.

The Renewed Attempts

In 2022, I moved to a different company, and there, another Senior Engineer in my team started using Neovim, and I thought I would try it one more time. Let’s see; maybe I’m up for it now. The same pattern emerged where I was dead slow. I thought this is it. I’m not gonna try again and stopped using it once and for all (except when doing interactive rebase in Git).

The Pivotal Moment

Everything was going well until I joined a new company again (yes, hectic times, I moved to 3 different companies in 3 years — moved countries and other things out of my hand). But anyway, back to the subject. I wanted to give it one more try again because of a guy called Primeagen. YouTube suggested his video for some reason, the video was cool, and there it was waiting for me. He was using Neovim, and man, I got to see the editor again, which I thought I wouldn’t touch or go near. He was basically flying at lightning speed, and it was fun watching him navigate through the codebase. This time, I wanted to use it badly (wanted to have fun while coding). I was impatient in configuring my own settings, so I installed NvChad. It looked so pretty, and I was learning the cheatsheet and was like, “Wow, this is interesting.” I was learning all the keycombos and Vim motions; it was fun, and I was happy. But still, I was very slow and used GoLand and VSCode like 80% of my dev work. But still, I was getting used to the hjkl navigation and other keystrokes, but then I slowly moved to using IDEs again and forgot about it.

The Perseverance

I did continuously watch ThePrimeagen and TJDeVries, loved all their uploads. I was using Neovim here and there sometimes but not fully as my primary editor. I tried LunarVim, LazyVim, AstroNvim; all had different keycombos and project structure. I was pretty confused and thought, no way I will be able to create my own config, and even if I did, it would be shitty compared to what others are using and with the other Nvim distros. I tried using kickstart.nvim that TJ DeVries suggested, but for some reason, it didn’t stick with me.

The Eureka Moment

Finally, I stumbled upon a video from Josean Martinez. I watched the video entirely, and man, at the end of the video, I got the hang of it. It was my eureka moment where I was like, “Shit, I’ve been dumb all along.” I mean, other videos I watched over the year were good too, but this one hit my brain like nothing else. I was like, “Yeah, let’s roll, baby.” And there started my Neovim journey.

It’s been two weeks since I watched that video, and I joined the crowd, I think, tweaking my Nvim config, adding plugins, removing them, and doing this never-ending tinkering process. Programming is fun again, and I started using Neovim as my primary editor. As TJDeVries says, I finally found my PDE (Personal Development Environment). I now get the hang of it and can’t think of not using Vim motions in any editor (PS: I installed the Vimium extension in my browser and love it too).

The Takeaway

Anyway, what I was about to tell is that, to all fellow people who are trying to use Neovim or trying to do programming in a fun way, just hang in there; there is light at the end of the tunnel. I know that I barely scratched the surface and am a beginner in Neovim now, but let’s see what the future holds.

Some YouTube channels that I follow for Neovim content:

And finally all thanks to my Senior Engineers, ThePrimeagen, TJDevries and the whole Neovim and Vim community for everything and I guess its time for me to contribute to the ecosystem. I’ll share my Neovim configurations and the plugins that I use in future blogs. 😁

My Nvim Config — https://github.com/cksidharthan/nvim

http://programmerhumor.io

--

--