A minimal Neovim 0.12+ configuration using native vim.pack for plugin management.
- Neovim 0.12+
- Git
- Rust via rustup (builds blink.cmp)
- Node.js (markdown-preview.nvim)
- uv (Python debugging)
- yazi (terminal file manager)
git clone https://github.com/yourusername/nvim ~/.config/nvim
nvimPlugins install automatically on first launch.
AI - Sidekick (Claude) and GitHub Copilot integration LSP - Lua, TypeScript, Python (basedpyright), Rust Treesitter - Syntax highlighting for Lua, Python, Rust, TypeScript, JavaScript, Go, Bash, JSON, YAML, Markdown, HTML, CSS Formatting - Format on save via conform.nvim (stylua, ruff, prettierd, shfmt, goimports, rustfmt) Linting - Async linting via nvim-lint (selene, eslint_d, shellcheck, golangci-lint) Completion - blink.cmp with LuaSnip snippets; Copilot inline ghost text Debugging - DAP with Python, Go, and Rust support and virtual text Buffers - Native tabline showing all open buffers with modified indicator, Ctrl+arrow navigation Navigation - mini.files explorer, mini.pick fuzzy finder, yazi file manager, flash.nvim motions, tmux integration Notes - Obsidian vault integration with wiki links, daily notes, and templates Git - Git commands (mini.git), diff signs and hunk staging (mini.diff), side-by-side diff viewer (diffview.nvim) Utilities - Auto project root, cursor restore, terminal background sync, buffer zoom (mini.misc)
Leader: Space | Local Leader: \
| Key | Action |
|---|---|
<leader><leader> |
Files |
fg |
Grep |
fh |
Help |
fn |
Notifications |
fr |
Resume picker |
fo |
Old files |
f/ |
Buffer lines |
fw |
Grep word |
fc |
Commands |
fk |
Keymaps |
fm |
Marks |
f' |
Registers |
fd |
Diagnostics |
fs |
Document symbols |
fS |
Workspace symbols |
In grep/files picker, press <C-o> to add glob filters (e.g., *.md, src/**).
In buffers picker, press <C-d> to wipe the selected buffer.
| Key | Action |
|---|---|
aa |
Toggle Sidekick |
ac |
Toggle Claude |
as |
Select CLI |
ap |
Prompt |
C-. |
Focus Sidekick |
| Key | Action |
|---|---|
M-l |
Accept suggestion |
M-j |
Accept line |
M-k |
Accept word |
M-] |
Next suggestion |
M-[ |
Previous suggestion |
C-] |
Dismiss |
| Key | Action |
|---|---|
dc |
Continue |
do |
Step over |
di |
Step into |
du |
Step out |
db |
Toggle breakpoint |
dB |
Conditional breakpoint |
dr |
Open REPL |
dl |
Run last |
dt |
Terminate |
dv |
Toggle DAP view |
| Key | Action |
|---|---|
bb |
Buffers |
bd |
Delete buffer |
bo |
Close other buffers |
| Key | Action |
|---|---|
cf |
Format buffer |
cc |
Format git changed |
cs |
Format git staged |
| Key | Action |
|---|---|
ta |
Toggle autoformat |
tc |
Toggle conceal |
| Key | Action |
|---|---|
xx |
Diagnostics |
xX |
Buffer diagnostics |
xs |
Symbols |
xl |
LSP references |
xL |
Location list |
| Key | Action |
|---|---|
jj |
Quit |
jk |
Save |
jl |
Save and quit |
j; |
Quit all (no save) |
| Key | Action |
|---|---|
wz |
Zoom toggle |
wm |
Message history |
| Key | Action |
|---|---|
gd |
Diff working tree |
gs |
Diff staged |
gh |
File history |
gH |
Repo history |
gc |
Close diffview |
| Key | Action |
|---|---|
gh |
Apply hunk |
gH |
Reset hunk |
[h |
Previous hunk |
]h |
Next hunk |
:Git |
Git commands |
| Key | Action |
|---|---|
oO |
Open Obsidian app |
oo |
Open note |
ov |
Switch vault |
on |
New note |
od |
Daily note |
oy |
Yesterday |
ot |
Tomorrow |
os |
Search |
ob |
Backlinks |
og |
Tags |
ol |
Link (visual: link) |
oT |
New from template |
oc |
Toggle checkbox |
oe |
Extract to note (v) |
| Key | Mode | Action |
|---|---|---|
s |
n,x,o | Jump to match |
gS |
n,x,o | Treesitter select |
r |
o | Remote flash |
R |
o,x | Treesitter search |
<C-s> |
c | Toggle flash in search |
Enhanced f/t motions show jump labels automatically.
| Key | Action |
|---|---|
Esc |
Clear search highlight |
- |
Open mini.files (parent) |
<leader>- |
Yazi |
< / > |
Indent (visual, repeatable) |
C-Left |
Previous buffer |
C-Right |
Next buffer |
C-x |
Exit terminal mode |
Use with operators: d (delete), c (change), y (yank), v (visual)
| Key | Text Object | Example |
|---|---|---|
( / ) |
Parentheses | vi( da) |
[ / ] |
Brackets | vi[ da] |
{ / } |
Braces | vi{ da} |
< / > |
Angles | vi< da> |
b |
Any bracket | vib dab |
" ' ` |
Quotes | vi" da' |
q |
Any quote | viq daq |
f |
Function call | vif daf |
a |
Argument | via cia |
t |
HTML/XML tag | vit cat |
? |
User prompt | vi? (prompts) |
F |
Function def | viF daF |
o |
Conditional / loop | vio dao |
c |
Class | vic dac |
C |
Comment | viC daC |
A |
Assignment | viA daA |
R |
Return statement | viR daR |
B |
Entire buffer | viB daB |
D |
Diagnostic | viD daD |
I |
Indent scope | viI daI |
L |
Line | viL daL |
N |
Number | viN daN |
Use 2i( or 2a( to select the next/outer match.
| Key | Action |
|---|---|
gz |
Add surrounding |
gzd |
Delete surrounding |
gzr |
Replace surrounding |
gzf |
Find surrounding |
gzF |
Find left |
gzh |
Highlight surrounding |
Jump to previous/next items with [ and ]:
| Key | Target |
|---|---|
[b/]b |
Buffer |
[c/]c |
Comment block |
[x/]x |
Conflict marker |
[d/]d |
Diagnostic |
[f/]f |
File on disk |
[h/]h |
Hunk (git diff) |
[i/]i |
Indent change |
[j/]j |
Jump (jumplist) |
[l/]l |
Location list |
[o/]o |
Oldfile |
[q/]q |
Quickfix |
[t/]t |
Treesitter node |
[u/]u |
Undo state |
[w/]w |
Window |
[y/]y |
Yank selection |
Capital letter jumps to first/last (e.g., [B/]B). Count prefix supported (e.g., 2]b).
~/.config/nvim/
├── init.lua
├── .luarc.json
├── .stylua.toml
├── selene.toml
├── vim.yml
└── lua/
├── autocommands.lua
├── blinkcmp-config.lua
├── conform-config.lua
├── copilot-config.lua
├── debugging-config.lua
├── flash-config.lua
├── keymaps.lua
├── lint-config.lua
├── lsp-config.lua
├── luasnip-config.lua
├── mini-config.lua
├── obsidian-config.lua
├── options.lua
├── plugins.lua
├── quicker-config.lua
├── sidekick-config.lua
├── theme.lua
├── treesitter-config.lua
├── trouble-config.lua
└── yazi-config.lua
| Plugin | Purpose |
|---|---|
| blink.cmp | Completion |
| blink-copilot | Copilot source for blink.cmp |
| conform.nvim | Formatting |
| copilot.lua | GitHub Copilot inline ghost text |
| flash.nvim | Motion jump with labels |
| friendly-snippets | Snippet collection |
| lazydev.nvim | Lua dev support |
| LuaSnip | Snippet engine |
| markdown-preview.nvim | Markdown preview |
| mason-lspconfig.nvim | Mason LSP bridge |
| mason-tool-installer.nvim | Auto-install tools |
| mason.nvim | LSP/tool installer |
| mini.nvim | File explorer, picker, statusline, notifications, text objects, pairs, surround, bracketed, key hints, git, diff, icons, hipatterns, cursorword, trailspace, misc utilities |
| nvim-dap | Debugging |
| nvim-dap-go | Go DAP adapter |
| nvim-dap-python | Python DAP adapter |
| nvim-dap-ui | DAP UI |
| nvim-dap-virtual-text | DAP inline values |
| nvim-nio | Async library |
| nvim-lint | Async linting |
| obsidian.nvim | Obsidian vault integration |
| nvim-lspconfig | LSP |
| nvim-treesitter | Syntax |
| nvim-treesitter-textobjects | Treesitter text object queries |
| quicker.nvim | Quickfix enhancement |
| sidekick.nvim | AI assistant |
| tokyonight.nvim | Theme |
| diffview.nvim | Side-by-side git diff viewer |
| trouble.nvim | Diagnostics list |
| vim-tmux-navigator | Tmux integration |
| plenary.nvim | Lua utility library |
| yazi.nvim | Yazi file manager integration |