Neovim plugin I am using
Policy
I carefully choose which Neovim plugins to use. When a plugin is small, I sometimes write the Lua code myself. Since I usually work in the terminal, I don’t try to do everything in Neovim; I use small scripts in Bash or Python instead. Even so, I currently use 18 plugins, so let me introduce them.
Basic plugins
- lazy.nvim … Plugin manager. I previously used vim-plug, packer.nvim, dein.vim, but now I use this.
- kanagawa.nvim … Dark color theme. Other popular ones are catppuccin, tokyonight.nvim, and gruvbox-material.
- rcsvers.vim … This uses an ancient version control system called RCS. Whenever I edit a file in Neovim, all the revisions are backed up in
~/.vim.d/bkup/
. - blink.cmp … Completion plugin that automatically shows pop-ups for completing from LSP, snippets, paths, and buffers. Another choice is nvim-cmp.
- flash.nvim … This helps you move the cursor with a few keystrokes. It also has Treesitter integration, which selects the range of code in visual mode; e.g., select the whole function.
- lualine.nvim … The plugin to manage the status line at the bottom.
- nvim-bqf … This plugin makes QuickFix more usable by adding previews.
- snacks.nvim … This is a collection of plugins that raise the QoS. This includes a picker, which can be a substitute for Telescope.nvim or fzf-lua.
Coding
- nvim-treesitter … Built-in Neovim uses regular expressions for highlighting and indenting code, but this uses more advanced parser called Treesitter.
- nvim-lspconfig … As of Neovim 0.11, you can use the LSP server more conveniently; however, you still need this because lots of LSP servers need their ad-hoc settings.
- roslyn.nvim … Uses Roslyn as a C# LSP. You need this because Roslyn uses a non-usual setup that cannot be done with the built-in LSP of Neovim.
- none-ls.nvim … Use external commands such as
stylua
orfish_indent
as LSP. Some LSP servers, such as Pyright, lack code formatting. In that case, you can use this plugin to use a formatter as LSP.
Debugging
I don’t use an interactive debugger frequently, but setting these up might be useful. nvim-dap-go
provides configurations for Go.
For Rust, most popular plugin is rustaceanvim, but I wrote my own config, which parses the output of cargo build -q
.
Required as dependencies
These are required as dependencies for the above plugins.
Plugins I don’t use, but may be useful
- mason.nvim … I prefer installing the LSP server with package managers such as
pacman
in Arch orhomebrew
in macOS, but if you want to manage those in Neovim, this is your choice. - nvim-treesitter-textobjects … I think the Treesitter integration of flash.nvim is enough, but if you want to do more advanced queries, use this.
- nvim-treesitter-context … When the function or class is long, it shows the signature at the top of the buffer. I don’t use this because long functions are evil, but if you need to work with those evil codebases, use this.
- fugitive, neogit, gitsigns.nvim, Diffview.nvim … I prefer CLI
git
command, but these may be useful when you want use git in Neovim. - trouble.nvim … Shows diagnostics more beautifully.
Conclusion
This is my Neovim config. If you are interested, please take a look.