Personal Neovim configuration using Neovim's native vim.pack package manager.
- Neovim 0.12 or newer
- git
- tree-sitter CLI and a C compiler
- ripgrep and fd (recommended for faster Snacks searches)
- a patched Nerd Font (optional)
Mason installs the configured language servers, formatters, and linters. Native
package revisions are recorded in nvim-pack-lock.json.
Update packages and review the resulting confirmation buffer:
:lua vim.pack.update()Write the confirmation buffer to apply updates, then use :restart. To remove a
package, delete its specification from lua/user/deps.lua, restart, and call
vim.pack.del() for the inactive package.
Leader key: Space.
| Mode | Key | Action |
|---|---|---|
| Normal/Visual | <leader>h |
Go to first character |
| Normal/Visual | <leader>l |
Go to last character |
| Normal | <leader>a |
Select all text |
| Normal/Visual | x / X |
Delete without yanking |
| Normal | <leader>w |
Save file |
| Normal | <leader>q |
Quit |
| Normal | <leader>bq |
Delete buffer |
| Normal | <leader>bl |
Go to previous buffer |
| Normal | <leader>bc |
Close buffer while preserving layout |
| Normal | - / \ |
Open parent directory with Oil |
| Normal/Term | <C-g> |
Toggle terminal |
| Normal | <leader><space> |
Search open buffers |
| Normal | <leader>ff |
Find files |
| Normal | <leader>fh |
Recent files |
| Normal | <leader>fg |
Search project |
| Normal | <leader>fd |
Search diagnostics |
| Normal | <leader>fs |
Search current buffer |
| Normal | <leader>u |
Search undo history |
| Normal | <leader>/ |
Search all pickers |
| Normal | <leader>? |
Search keymaps |
| Normal | <leader>z |
Toggle Snacks zen mode |
| Normal | gd |
Go to definition |
| Normal | <leader>th |
Toggle inlay hints |
| Normal/Visual | <leader>cf |
Format buffer |
| Normal | <leader>cl |
Lint buffer |
Neovim's native LSP mappings provide K, gra, gri, grn, grr, grt,
gO, and insert-mode <C-s>. The system clipboard is used through
clipboard=unnamedplus. Format the buffer manually with <leader>cf.
| Plugin | Purpose |
|---|---|
| mini.nvim | Editing modules, statusline, Git and diff UI |
| snacks.nvim | Picker, terminal, zen mode, input and big-file handling |
| blink.cmp | Completion and native snippets |
| nvim-lspconfig | Native LSP configuration definitions |
| mason.nvim | External development tools |
| ts-enable.nvim | Tree-sitter parser management and activation |
| conform.nvim | Formatting |
| nvim-lint | Asynchronous linting |
| oil.nvim | Filesystem editing |
| lazydev.nvim | Neovim Lua API types for lua_ls |
| which-key.nvim | Keymap hints |
| render-markdown.nvim | Inline Markdown rendering |
| kanagawa.nvim | Colorscheme |
~/.config/nvim/
├── init.lua
├── nvim-pack-lock.json
├── lua/user/
│ ├── settings.lua
│ ├── keymaps.lua
│ ├── commands.lua
│ └── deps.lua
└── plugin/
├── blink-cmp.lua
├── conform.lua
├── lazydev.lua
├── lspconfig.lua
├── markdown_render.lua
├── mini.lua
├── nvim-lint.lua
├── oil.lua
├── snacks.lua
├── theme.lua
├── treesitter.lua
└── which-key.lua