Modular Neovim config for 0.12+ using native vim.pack, experimental ui2 + tiny-cmdline (centered :), and Snacks as the sole picker.
- Neovim >= 0.12
- Git (for
vim.pack) - Nerd Font (recommended)
- Kitty/WezTerm/Ghostty (for
image.nviminline images)
export NVIM_APPNAME=kickstart.nvim # datadir: ~/.local/share/kickstart.nvim
nvimFirst launch clones plugins via vim.pack.add() into your data directory.
init.lua entry: leader keys, ui2, config/*
lua/config/ options, keymaps, autocmds (kickstart port target)
plugin/*.lua one file per plugin group; each calls vim.pack.add()
snippets/vscode/ nvim-scissors VS Code-style snippets
scripts/ smoke checks
:lua vim.pack.update()Fresh install (drops lazy.nvim leftovers and reinstalls from lockfile):
./scripts/reinstall-plugins.shLockfile: nvim-pack-lock.json (commit for reproducible installs).
| Key | Action |
|---|---|
- |
oil.nvim file tree |
| |
Snacks dashboard |
<leader><space> |
Snacks buffers |
<leader>sf |
find files |
<leader>sg |
live grep |
<leader>gs |
neogit |
<leader>gm |
codereview MR/PR |
<leader>tr |
neotest run |
<leader>b |
DAP breakpoint |
<leader>. |
Luapad REPL menu |
codereview.nvim reads GITLAB_TOKEN from the environment, or from 1Password (op://Employee/GITLAB_API_TOKEN/credential). Set GITHUB_TOKEN for GitHub repos.
:Mason installs servers; :LspInstall <server> also works.
| Language | Server |
|---|---|
| TypeScript/JS | ts_ls |
| Java | jdtls |
| Kotlin | kotlin_language_server |
| HTML | superhtml |
| Gradle | gradle_ls |
| Python | pylsp |
| bash/sh/zsh | bashls |
| Lua (incl. Neovim config) | lua_ls + lazydev |
| Docker | dockerls |
Neovim config Lua uses lazydev so vim.* and plugin APIs resolve without undeclared-global noise.
Hammerspoon: load the EmmyLua spoon once so annotations exist at ~/.hammerspoon/Spoons/EmmyLua.spoon/annotations; lua_ls then picks up hs/spoon stubs automatically.
./scripts/check-plugins.sh