Moving from Standard IDEs to Neovim

Why would you sacrifice the luxury an IDE provides for a terminal text editor from the past? Is it worth it? Well my answer is "It depends!", but let us see why.

Introduction

Like many developers, I started my journey using Visual Studio Code. It is a great text editor with a lot of features and extensions that can make your life easier. But I have two somewhat silly reasons for not liking it.

  1. It's a Microsoft product (I am not a fan of Microsoft, though I do use their products like GitHub and Copilot)
  2. But the main reason is Electron...

I am not a fan of Electron; I think it is a resource hog and slow The idea of packing a whole browser into an application to make it cross-platform is, in my humble opinion, a double-edged sword. It is great for developers because they can write once and run everywhere, but it is not great for the end-user. So I started experimenting with different Text Editors and IDEs. But here's the thing—I wasn't entirely honest earlier!

Yes indeed I'm not a fan of VSCode, but at the start of my journey where I was learning to code I had NO idea what was going on behind the scenes. I was just writing code and running it. The real reason why I started trying different Text Editors and IDEs was the same reason why I am changing Linux distros every other week. I wanted to try them all! I wanted to see the different UIs, the different features, the different workflows. I wanted to see what was out there and what I could use to make my life easier excited.

You just got Neovim'd

So after trying many different text editors and IDEs, I ended up using... WebStorm? Well the thing is I got my first job as a Front End Developer and my work place gave me a license for it. So let me tell you, WebStorm is an AMAZING IDE. It has everything you possibly need, and to this day, I have not found any Git toolset that can compete with the one WebStorm offers (and I have tried many). But, being me, I wanted to try that new thing I just heard about—and it runs in the terminal!

WOW, WOW, WOW! So I can write/read/execute code in my terminal? That is so cool! My brain felt like it was winning at the slot machines in a casino—777 (see what I did there?). But the most important thing is that I can customize it HOWEVER I want. I can write more code to make it look better and tweak it to my workflow! Is this the best thing EVER? Well... no.

What is wrong with Neovim?

Well, I was so hyped about it that I started looking at different configs and plugins and I found out that there are a lot of people that use Neovim and they have some amazing setups. But that's not all there is to it. Every time you stumble upon a video or a blog post about Neovim everyone will tell you that you need to learn Vim and Vim motions to work with it. And it is true! You need to learn Vim and Vim motions to work with Neovim. And it is a learning curve. It will take time to get used to it and it will take time to be productive with it. For the first few months—maybe even a year—I was using VSCode alongside Neovim because I didn't even know how Git works!

Yes, I had to learn the fundamentals of the programs I was using every day without previously asking how or why they work. I was just using it. For Git, for example, I was using either JetBrains' tools—which had an amazing UI and were so easy to use—or I was using VSCode's Git UI along with the GitLens extension. But when I started using Neovim I had to learn how to use git in the terminal. And not only git, I had to learn how to use the terminal. I had to learn how to navigate in the terminal. And it is a lot of things to learn. But it is worth it.

Why would you use Neovim?

At the end of the day sticking with learning Neovim helped me improve as a developer. I learned a lot of fundamentals that I didn't know before. I learned how to use the terminal. I was able to approach problems differently and I was able to solve them faster. I understood why sometimes using tools other than the ones provided—like using Lua instead of Vimscript—can make your life easier (I mean, seriously, have you tried writing your config in Vimscript? It's a mess 🤮). And all that I achieved just because I forced myself to learn Neovim.

After you learn Neovim you are stuck with it for life. You want vim-motions in every program you use because it makes you so much faster. What? You are at the first line of your huge file and you want to go down to the line 1783? Yeah sure you can scroll there but... you can just 1782j and there you are! You zoom between files and lines like a ninja! You feel so... powerful.

And finally, the community. The community around Neovim is amazing; there are so many plugins and configs to get inspired by. Like NvChad, SpaceVim, LunarVim, Astronvim and many more. You can find a config that suits you and you can tweak it to your liking. And you also have Siduck. I swear, the guy has taken some sort of oath to make Neovim look so good that it makes other text editors look like a joke. You need to check his work, it speaks for itself.

Conclusion

If you have the time and the will to learn Neovim, do it. It will only help you improve in so many ways. But if you are happy with your current setup and you don't want to change it, that is fine too. At the end of the day, the tools you use are just tools. They are there to help you do your job. If you are happy with your current setup and you are productive with it, then why change it? (Because you're a psycho like me!)

Yes, it's not all sunshine and rainbows, but dipping your toes into deep waters will only help you grow.