Why do we need to keep revisiting this?
The short answer is we don’t.
The long answer is a bit more personal. While I don’t work as a developer anymore, I do still have to work with code occasionally, and I still, for whatever reason, enjoy tinkering with my tools. I find that talking about and tinkering with CLI tools is a lot of fun, and one of my favorite tools is Neovim. Every now and then I’ll re-evaluate my setup and try to improve on my previous config by setting up a new one from scratch, keeping what I felt worked well in the previous setup, and adding new things that I think will either improve on tools I already use or which will streamline a workflow that I didn’t previously have. And yes, believe it or not, as your career advances your workflow will also continue to change. Yet another reason occasional re-evaluation is a good thing.
To potentially save people some time, I want to mention that this article is not intended for people new to Vim or NeoVim. I assume that you have some previous knowledge of vim/vim and either have experience with Lua or, at the least, no aversion to it.
Neovim vs Vim
I wanted to get this out of the way real quick because there will probably be some confusion if you’re not familiar with the history. Neovim is a fork of Vim that has several notable improvements. The core functionality is compatible with Vim, e.g., if you aliased a bare version of
vim with a bare version
nvim, a user opening the editor would never realize they were using NeoVim.
The notable improvements mentioned above are based on aggressive refactoring giving the following benefits:
- Overall performance improvements
- Using the XDG Base Directory standard for configuration instead of hardcoded directories
- A more sophisticated plugin API that allows the use of RPC calls and Lua for plugin creation and scripting (Vimscript v1 is also supported)
- Native support of LSP
- Support for asynchronous I/O
I switched between the two editors without much thought for years but decided to finally commit to Nvim in June of 2022 when the decision was made to essentially…