Personal Neovim configuration with LSP, debugging, testing, and git integration.
sudo apt update && sudo apt install -y curl fd-find git lua5.3 make python3 python3-crontab python3-pip python3-pynvim python3-requests python3-venv python3-virtualenv ripgrep unzip rust-all nodejs npm
curl -sSL https://raw.githubusercontent.com/watkins-matt/nvim-config/main/update.py -o ~/update_nvim.py && chmod +x ~/update_nvim.py && sudo python3 ~/update_nvim.py && rm ~/update_nvim.py# Node.js provider (for plugins that use Node)
npm install -g neovim
# Tree-sitter CLI (for :TSInstallFromGrammar, not required for :TSInstall)
npm install -g tree-sitter-cliPlugin manager for Neovim. Use to install, update, or remove plugins.
- Press
Ito install missing plugins - Press
Uto update plugins - Press
Xto clean unused plugins - Press
Sto sync (clean + install + update)
Installer for LSP servers, linters, and formatters. Browse and install language tools.
- Press
ion a package to install - Press
Xto uninstall - Press
uto update
Shows which LSP servers are active for the current buffer. Useful for debugging why autocomplete or diagnostics are not working.
Updates Treesitter parsers (syntax highlighting). Run after adding new languages or if syntax highlighting breaks.
Runs diagnostic checks on your Neovim setup. Shows issues with plugins, providers (Python, Node), and dependencies.
Leader key is <Space>.
| Key | Description |
|---|---|
<leader>e |
Toggle file explorer (nvim-tree) |
<leader>sf |
Search files |
<leader>sg |
Search by grep (live) |
<leader>s. |
Search recent files |
<leader><leader> |
Find open buffers |
<leader>/ |
Fuzzy search in current buffer |
| Key | Description |
|---|---|
<leader>gg |
Open LazyGit (fullscreen) |
<leader>hs |
Stage hunk |
<leader>hr |
Reset hunk |
<leader>hS |
Stage buffer |
<leader>hR |
Reset buffer |
<leader>hp |
Preview hunk |
<leader>hb |
Blame line |
<leader>hd |
Diff against index |
<leader>tb |
Toggle line blame |
]c / [c |
Next/prev git change |
| Key | Description |
|---|---|
<leader>t |
Toggle test summary panel |
<leader>rt |
Run nearest test |
<leader>rf |
Run current file tests |
<leader>ro |
Open test output |
| Key | Description |
|---|---|
<leader>dc |
Start/Continue |
<leader>db |
Toggle breakpoint |
<leader>dB |
Set conditional breakpoint |
<leader>di |
Step into |
<leader>do |
Step over |
<leader>du |
Step out |
<leader>dt |
Toggle DAP UI |
<leader>dr |
Toggle REPL |
<leader>dx |
Terminate |
| Key | Description |
|---|---|
gd |
Go to definition |
gr |
Go to references |
gI |
Go to implementation |
gD |
Go to declaration |
K |
Hover documentation |
<leader>ca |
Code action |
<leader>rn |
Rename symbol |
<leader>ds |
Document symbols |
<leader>ws |
Workspace symbols |
<leader>D |
Type definition |
<leader>th |
Toggle inlay hints |
| Key | Description |
|---|---|
<leader>sh |
Search help |
<leader>sk |
Search keymaps |
<leader>ss |
Search Telescope builtins |
<leader>sw |
Search current word |
<leader>sd |
Search diagnostics |
<leader>sr |
Resume last search |
<leader>sn |
Search nvim config files |
| Key | Description |
|---|---|
Ctrl+h/j/k/l |
Navigate splits (also works with tmux) |
Ctrl+arrows |
Navigate splits (alternative) |
| Key | Description |
|---|---|
<leader>f |
Format buffer |
<leader>x |
Toggle trouble (diagnostics) |
<leader>i |
Enable paste mode + insert |
s / S |
Leap motion (jump to chars) |
The update script runs nightly at 2am and updates:
- Neovim AppImage (to latest release)
- This configuration (via git pull)
- All plugins (via Lazy sync)
All warnings and errors are automatically logged to:
~/.local/state/nvim/nvim-errors.log
View recent errors:
cat ~/.local/state/nvim/nvim-errors.log
tail -f ~/.local/state/nvim/nvim-errors.log # live followA termux-bootstrap.sh script is provided for Termux installations.
curl -sL https://raw.githubusercontent.com/watkins-matt/nvim-config/main/termux-bootstrap.sh > termux-bootstrap.sh
bash termux-bootstrap.shConfiguration is based on kickstart-modular.