Neovim is my code editor of choice. Over the years I've tried many other code editors: JetBrains, Atom, VSCode - they all worked fine for me in their time. But since I tried switching fully to neovim I haven't been able to go back.
Comparing to other code editors, nvim may look very simple. But that's only an illusion. Neovim has a very robust plugin system that can be leveraged to build a full-blown IDE. I wouldn't be suprised if there were a plugin for every feature that you would expect from a top IDE.
So what are some of my top picks?
1. NvimTree
NvimTree.lua is the file explorer plugin that opens in the sidebar. It's easy to navigate, and has a customizable config. It integrates nicely with LSP, Git and provides a mouse support. For me, no config modifications were needed - works perfectly out of the box 👌.
2. vim-surround
vim-surround was created by a tpope - a well known vim plugin creator. It's another plugin that I cannot live without. As the name suggests - it lets you surround an object with quotes, brackets or tags. But it goes even further - it lets you change the surroundings or delete them altogether.
It requires no config, and you can learn the keybindings within minutes. Check out the vim-surround docs to learn the motions.
3. nvim-lspconfig
With version 0.5 nvim shipped a native LSP support. nvim-lspconfig is a plugin that aims to make LSP configuration a breeze. You can configure each LSP server separately.
Check out my typescript config: lsp.lua
A list of supported LSP servers can be found here.
4. fzf - fuzzy search
fzf.vim is a plugin that largely contributes to the speed of editing in nvim. It lets you open a fuzzy search in a floating window, to find files, perform a project-wide search and more.
Just make sure to install the fzf dependency!
5. dashboard-nvim
If, like me, you spend a lot of time in your code editor, it's important to make it look nice, but also make it easy to move around.
Dashboard plugin comes in handy in both cases. It makes neovim feel more like an IDE, but also provides handy shortcuts to the most commonly used commands.
It's highly configurable, so you may freely express yourself and make it your own.
If you'd like to take a look at my config here's the link.
6. lspsaga
lspsaga is another plugin responsible for LSP support. It adds various functions that are built in in many top IDEs like: go to definition, code actions, refactoring, hover docs and more.
It's another must-have on this list.
7. feline-nvim
feline-nvim is a status line plugin which is easy to use. It requires minimal configuration and looks nice out of the box.
8. nvim-cokeline
If I had to say what was the most annoying part of switching to nvim - it surely was the lack of proper bufferline plugin. cokeline is a bufferline which finally make me sleep well.
It's highly customizable, and provides some nice features like: unique buffer names, LSP support, icon support and more.
9. floaterm
floaterm is a terminal manager plugin, that allows you to open a floating terminal window on top of your current buffer.
I use it a lot - to run my dev servers, quickly install dependencies and to run lazygit.
It's easy to manage multiple terminal windows and you can run your custom commands when opening new window.
I use the following command to run my lazygit instance directly in neovim:
:FloatermNew --height=0.9 --width=0.9 --wintype=float --name=lazygit --autoclose=2 lazygit <CR>
10. Tokyonight theme
Tokyonight theme is by far, my favourite neovim theme. It comes in three versions: storm (the default one), night and day. The default theme works for me the best. So far I haven't been able to find another theme that integrates so nicely with the rest of my plugins.
Bonus one: Github Copilot
Since I've joined the beta for the github copilot I was waiting for someone who will create an unofficial copilot plugin for vim. I was so happy when I found out that github has released an official version of copilot for vim.
So far it works great, most of the time it offers correct code completion. Although, I wouldn't rely on it to do all the work itself.
Conclusions
That's it! These are my favourite neovim plugins. If you'd like to learn more, you can check out my neovim config. It contains a lot more useful plugins, that we did not have enough time to talk about today! But may you be warned, that it's highly opinionated, and tailored to match my needs.
I hope you liked this little top 10 list. If you're interested in learning more about neovim/vim, stay tuned for more content on this blog.