Now I get NeoVim
Tags: development, neovim, code
Published: 2024-05-16 20:16:32

I've been seriously working in the web development work for the last 4 to 5 years, in this time I used sublime, atom, VS Code, RubyMine.

# Storytime
I remember a while a go a junior developer used Neovim to edit their files, and he was a fast at writing code, but he took too long to start working, he had issues following the project structure, and he had issues when finding declarations, I used to think that it was the editor problem, now I know it was a lack of experience working in big code bases (Skill issue some people will say), so I refused to try it and limit my knowledge to edit remote files with vim.

While I enjoyed a lot of the plugins and cool stuff of those editors (specially RubyMine for working with ruby), then I change jobs and I started to get frustrated as my environment was accessed remotely so I got to fight the network latency plus the editor natural slowness, and it was driving me crazy... So while half of the team was on vacation, I took the time to look in to Neovim, why is so praised and what it could do for me.

# The Neovim Experience

I started by looking at The Primeagen Neovim tutorial that is only 4 videos long, used vim motions in VS Code for about a week, and then I made the jump to the real deal, I downloaded the [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) files and starting using it. It was painful, I could not get some basic features for my personal projects working, highlight was broken as well as the go-to definitions, but as you should do as a developer, I looked up in google how to solve some issues, I found that I was missing some dependencies and I needed to install some stuff so treesitter could color my vue files, installed some LSPs, so I could write some basic Golang and I became to be productive.

I discover a channel that gives commands and teaches Neovim + tmux, so I started watching their videos and a month latter I started to use Neovim at my job, I still have some issues with one LSP, but I know how to write code without it so no problem there, and after all this rambling, what is what I now get?

# What I learned
Neovim not only is highly customizable but has some really simple commands that make sense change inside, delete to, yank, paste, etc. they just made sense so is easier to write code and change between files, quick fix lists are like magic, the themes are sensible and easy to read, git integration with fugitive is amazing, and it is fast, really fast, I never had to wait to open the file once I selected it and I can focus on working on the issue I have at my screen at the moment.

Don't get me wrong, is not perfect, neither JetBrains products, it has its own drawbacks so if I had to think about when you should start using Neovim, I would say that once you understand some architecture and some patterns, if you know how to search any code base manually then you can start using a tool like this, in case your LSP stops working you won't get stopped because you know how to search your documentation and where to look for certain files.

If tomorrow I had to switch jobs, I think I can make it with only Neovim and my config, or maybe I'll try to use the same tools as the rest of the team until I get comfortable with the project to jump again to Neovim.