My Neovim configuration. Leveraging LazyVim.
brew install \
fd \
fzf \
git \
go \
neovim \
node \
npm \
python3 \
ripgrep \
ruby \
terraformyay -S \
fd \
fzf \
go \
neovim \
nodejs \
npm \
python \
ripgrep \
ruby \
terraform \
wget \
zipmake initmake updateLSP servers and tools are managed by Mason with version-locked installs via mason-lock.nvim.
To restore pinned tools:
make restore:Mason— browse/install packages:MasonLock— save current versions tomason-lock.json:MasonLockRestore— install exact versions from lockfile
Use Space ? to search all keymaps. See LazyVim keymap for full reference.
- Shift l / ]b: Next buffer
- Shift h / [b: Previous buffer
- Space Tab: Browse open buffers (dropdown picker, j/k to navigate, type to filter)
- Space bd: Delete buffer
- Space qq: Quit all
- Ctl h/j/k/l: Window movement
- Ctl q: Toggle terminal insert mode
- -: Browse files (vertical popup)
- Space e: Browse root directory (sidebar)
- Space Space: Find files
- Space /: Live grep across project (ripgrep + fzf)
- _: Browse symbols in current file (scrollable tree + preview)
- &: Fuzzy search symbols across workspace (LSP)
- s: Jump to letter (flash)
- S: Select treesitter node (flash) — highlights syntax blocks like functions, conditions, loops; type a label to jump/select
- g s r: Replace surrounding
- g s a / g s d: Add / delete surrounding
- > / < (visual): Indent / unindent
- g c c / g c (visual): Comment
- F: Format
- Ctl y: Copy buffer to clipboard
- Y (visual): Copy selection to clipboard
- %: Jump to matching bracket / paren / brace
- qa: Record macro into register
a(stop with q); @a to replay, @@ to repeat last
- Ctl Space: Manually trigger / toggle docs
- Tab / Shift Tab: Navigate list
- Enter: Confirm selection
- Ctl e: Cancel
- Ctl b / Ctl f: Scroll docs
- K: Hover docs for symbol under cursor
- gK: Signature help — shows function parameter list (like the tooltip when you type
() - gd: Go to definition
- gI: Go to implementation
- gy: Go to type definition
- gr: References
- `: Toggle floating diagnostics
- ]d / [d: Next / previous diagnostic
Space c is the code action prefix — hit it and which-key shows everything available. Key ones:
- Space cr: Rename symbol (F2 in VSCode / GoLand)
- Space ca: Code action / quick fix (Ctrl+. in VSCode) — extract variable, organize imports, fix errors
- Space cf: Format file
- Space cR: Rename file (updates LSP references too)
- Space uh: Toggle inlay hints (inline type annotations in the code)
Space s is the search prefix. Useful ones beyond files:
- Space sS: Symbols across workspace (same as &)
- ]h / [h: Next / previous hunk
- Space ghs: Stage hunk
- Space ghr: Reset hunk
- Space gb: Blame line
- Space tr: Run nearest test
- Space tf: Run file tests
- Ctl g: Toggle Claude Code panel (works in normal, insert, and terminal mode)
- Ctl /: Open terminal
- Esc: Dismiss notifications + clear search highlights
| Was | Now |
|---|---|
q |
<leader>bd / <leader>qq |
<Tab><Tab> / <S-Tab><S-Tab> |
<S-l> / <S-h> |
> / < (normal, diagnostics) |
]d / [d |
<C-h> (git hunk, broke window nav) |
]h |
<Tab> / <S-Tab> (visual indent) |
> / < |
<Esc> (dismiss notifs, broke noh) |
<Esc> does both now |
<C-t> (todo search) |
<leader>sT |
# (comment) |
gcc / gc |
# (search backward) |
* then N |
cs (surround replace) |
gsr |
- Space ?: Search all keymaps (fzf)
- Space sC: Search commands (fzf)
- Space :: Search command history (fzf)
- LazyVim keymaps reference