Skip to content

Neovim

Neovim is a highly-extensible keyboard-based editor.

Inspired by https://github.com/nvim-lua/kickstart.nvim.

Installation

  • Install Neovim>=0.11 (native LSP setup).
  • Install the external dependencies.
sudo snap install nvim --classic
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip, fd-find

For MacOS

brew install neovim
brew install ripgrep fd

Plugins

I use the plugin manager lazy.nvim to install all plugins. I also use mini.nvim and snacks.nvim, two collections of plugins for Neovim.

✔️: finished setup and documentation.

❌: not setup properly and not documented.

Working on text and code

Name Purpose Dependencies Notes
blink.nvim A completion plugin with support for LSPs and external sources ✔️
conform.nvim Formatter plugin ✔️
iron.nvim Interactive REPL (Read–Eval–Print Loop) ✔️
mini.ai Extend and create a/i textobjects ✔️
mini.move Move any selection in any direction ✔️
mini.surround Fast and feature-rich surround actions ✔️
neotest Run and interact with tests nvim-nio, plenary.nvim, FixCursorHold.nvim, nvim-treesitter, neotest-python ✔️
nvim-autopairs Autocomplete autopairs, e.g. [],{},() etc. ✔️
nvim-dap Debug Adapter Protocol client implementation nvim-dap-ui, nvim-nio, nvim-dap-virtual-text, nvim-dap-python ✔️
nvim-lint Support linters which have no LSP support ✔️
nvim-treesitter Parser generator tool and incremental parsing library nvim-treesitter-context, nvim-treesitter-textobjects ✔️
render-markdown.nvim Improve viewing markdown files Markdown parser for treesitter ✔️
snacks.indent Adds indentation guides even on blank lines ✔️
snacks.zen Zen mode, distraction-free coding ✔️
todo-comments.nvim Highlight your to-do comments in different styles nvim-lua/plenary.nvim ✔️
trouble.nvim Pretty list for diagnosis and more ✔️
undotree Visualize undo history ✔️
venv-selector.nvim Browse existing python virtual environments on your computer and select one to activate inside neovim. fd, telescope.nvim, nvim-dap nvim-dap-python, debugpy ✔️
vim-sleuth Smart indentation style detection ✔️

Working with files and navigating between files

Name Purpose Dependencies Notes
harpoon Auto updating and editable marks utility for fast file navigation nvim-lua/plenary.nvim ✔️
oil.nvim File Explorer that lets you edit your filesystem like a normal Neovim buffer ✔️
telescope.nvim Fuzzy finder nvim-lua/plenary.nvim, telescope-fzf-native.nvim, telescope-ui-select.nvim, external: ripgrep ✔️
vim-tmux-navigator Seamless navigation between vim panes and tmux splits tmux ✔️

Git Integration

Name Purpose Dependencies Notes
gitsigns.nvim Deep buffer integration for Git ✔️
git-worktree.nvim A simple wrapper around git worktree operations, create, switch, and delete. ✔️
lazygit Simple terminal UI for git commands
vim-fugitive Git plugin for Vim

Miscellaneous

Name Purpose Dependencies Notes
fidget.nvim Extensible UI for Neovim notifications and LSP progress messages ✔️
lua line.nvim Fast and easy to configure Neovim statusline ✔️
mini.icons File and folder icons ✔️
obsidian.nvim Plugin for Obsidian
which-key.nvim Show available keybindings in a popup as you type ✔️

Language Server Protocol, Debug Adapter Protocol, Linter and Formatter

The LSP (Language Server Protocol), DAP (Debug Adapter Protocol), Linter and Formatter will be installed by the package manager Mason (with dependencies: mason-tool-installer.nvim, mason-nvim-dap.nvim).

Name Language Purpose Notes
bashls Bash, Sh, Zsh LSP It uses shellcheck, shfmt for linting and formatting.
debugpy Python DAP
harper_ls English 😄 Linter Grammar Checker
lua_ls Lua LSP lazydev.nvim is a plugin that properly configures LuaLS.
prettier JSON, Markdown, YAML Formatter
basedpyright Python LSP Need to install Node.js because Pyright is written in Typescript. LSP ty will be an alternative to basedpyright soon.
ruff Python LSP, Linter and Formatter
shellcheck Bash, Sh, Zsh Linter
shfmt Bash, Sh, Zsh Formatter
stylua Lua Formatter
taplo TOML LSP, Linter and Formatter
terraform_fmt Terraform Formatter
terraform-ls Terraform LSP
tflint Terraform LSP, Linter
trivy All Linter Security Scanner
yamlls YAML LSP