Neovim Config
Modernized Neovim config built around lazy.nvim, snacks.nvim, blink.cmp, and Neovim 0.11.x.
Stack
snacks.nvimfor picker, explorer, terminal, notifier, statuscolumn, indent guides, bigfile, and quickfile behaviorblink.cmp+LuaSnipfor completionnvim-lspconfig+mason.nvim+mason-lspconfig.nvimfor LSP managementgitsigns.nvim+neogit+codediff.nvimfor Git workflowsnvim-treesitterfor syntax highlighting and textobjectslualine.nvim+bufferline.nvimfor UInvim-dap+nvim-dap-ui+vim-delvefor debuggingmarkdown-preview.nvimfor Markdown preview
Requirements
- Neovim
0.11.5or newer on the0.11stable line gitripgrepcurlforblink.cmpprebuilt binariesfdforsnacks.nvimexplorer and fast file discovery- a Nerd Font for icons
Optional but recommended:
nodeformarkdown-preview.nvimtree-sitter-clifor parser maintenance workflows- Java
21+forjdtls
Layout
~/.config/nvim/
├── init.lua
├── lua/
│ ├── config/
│ │ ├── autocmds.lua
│ │ ├── keymaps.lua
│ │ ├── lsp.lua
│ │ ├── options.lua
│ │ └── theme.lua
│ └── plugins/
│ ├── init.lua
│ └── specs/
│ ├── colors.lua
│ ├── dap.lua
│ ├── editor.lua
│ ├── git.lua
│ ├── lsp.lua
│ └── snacks.lua
├── ftplugin/
│ └── java.lua
└── lazy-lock.json
Keymaps
Core navigation:
<C-h>or<leader>ff: find files<leader>fg: project grep<leader>fb: buffers<leader>fh: help<C-y>: open explorer, focus it when already open, or close it when focused<leader>tt: toggle terminal on the right
LSP:
gd: definitiongD: declarationgi: implementationgr: referencesK: hover<C-k>: signature help in normal mode<leader>rn: rename<leader>La: code action<leader>f: format buffer<leader>e: line diagnostics[g/]g: previous / next diagnostic
Git:
<leader>gp: preview hunk<leader>gs: stage hunk<leader>gu: undo staged hunk<leader>gr: reset hunk<leader>gb: blame line<leader>gg: open Neogit<leader>gd: open CodeDiff<leader>gh: diff current file againstHEAD
Buffers and tabs:
<Tab>/<S-Tab>: next / previous buffer<leader>bc: close current buffer<leader>bo: close other buffers<leader>tn: new tab<leader>tc: close tab
Toggles:
<leader>ud: diagnostics<leader>uh: inlay hints<leader>ug: indent guides<leader>ul: line numbers<leader>uL: relative numbers<leader>uw: wrap
Notes
- EditorConfig support comes from Neovim’s built-in runtime plugin, not an external plugin.
- Java configuration lives in
ftplugin/java.luaand expects the Mason-installedjdtlswrapper plus Java21+. - The config intentionally no longer includes Copilot, Telescope,
nvim-tree,toggleterm,nvim-cmp,vim-gitgutter, or the custom hover renderer.