H S Helson's Neovim config
This is my personal Neovim configuration, which I maintain for my own use and reference.
lazy heritage: This config is a handrolled port of parts of the LazyVim starter template.
Maximal compatibility: This config should work on both desktops, Nvidia Jetson devices, WSL, and android (via Termux) with minimal changes.
<leader> is <Space>. <localleader> is \. Mode column omitted for normal mode.
Key
Mode
Action
;
n, v
: (faster command-line)
::
n, v
; (original repeat-find)
<leader>w
Write
<leader>W
Write all
<leader>Q
Quit all
<leader>wq
Close window or tab (never quits Neovim)
<leader>m
Show :messages
<Esc>
Clear search highlight
<C-/>
n, v
Toggle line / selection comment
q
Disabled (use <leader>Mr)
Q
Disabled (use <leader>Mp)
<leader>Mr
Record macro (then register, then q to stop)
<leader>Mp
Play macro from register
[<tab> / ]<tab>
Previous / next tab
<leader>e
Open file's parent dir in OS file manager
<leader>E
Open cwd in OS file manager
q
In read-only panels (help, qf, lspinfo, notify, etc.): close
Key
Mode
Action
<C-h> / <C-j> / <C-k> / <C-l>
n, x, t
Move to window left / down / up / right (terminal-mode included; passed through to lazygit when running in a snacks terminal)
Key
Mode
Action
gd
Goto definition (fzf-lua → falls back to LSP)
gr
References (fzf-lua)
gI
Goto implementation (fzf-lua)
gy
Goto type definition (fzf-lua)
glt
Type definition (LSP buf)
glr
References (LSP buf)
glD
Implementation (LSP buf)
glo
Document symbols
glW
Workspace symbols
<leader>cr
Rename symbol
<leader>ca
n, v
Code actions
<leader>cd
Line diagnostics (float)
]d / [d
Next / prev diagnostic (any severity; Neovim default)
]e / [e
Next / prev error
]w / [w
Next / prev warning
<leader>cf
n, v
Format buffer / selection (conform)
<leader>cl
Run code lens (under cursor)
<leader>il
:LspInfo
<A-o>
Clangd: switch source/header (C/C++ buffers only)
Key
Action
<leader>ff
Find files
<leader>fg
Find files (Git)
<leader>fr
Recent files
<leader>fb
Buffers
<leader>sg
Live grep
<leader>fw
Grep word under cursor (in v: grep selection)
<leader>fh
Help tags
<leader>fk
Keymaps
<leader>fc
Commands
<leader>f:
Command history
<leader>f/
Search history
<leader>fR
Resume last picker
<leader>fi
Insert file path(s) at cursor
<leader>fd
Diagnostics (buffer)
<leader>fD
Diagnostics (workspace)
<leader>fs
Symbols (buffer)
<leader>fS
Symbols (workspace)
<leader>ft
Find todo comments
Search & replace (grug-far.nvim)
Key
Mode
Action
<leader>sr
Open grug-far search & replace
<leader>sr
v
Open grug-far seeded with the visual selection
q
(Inside grug-far) close the window
List panels (trouble.nvim)
Persistent panels — counterpart to the transient <leader>f* fzf pickers.
Read as "list X". Same suffix letters where the noun matches.
Key
Action
<leader>ld
List diagnostics (workspace)
<leader>lD
List diagnostics (buffer)
<leader>ls
List symbols
<leader>lr
List LSP refs/defs
<leader>lt
List todos
<leader>lq
List quickfix
<leader>lQ
List loclist
Key
Action
<leader>oo
Open Oil (floating)
<leader>oO
Open Oil (full window)
<leader>ov
Open Oil (vsplit on right)
<leader>of
Open Oil at chosen directory (fd picker)
Inside an Oil buffer: <CR> select, <leader>s/<leader>v open in split, <C-t> open in tab, <C-p> preview, <C-l> refresh, <bs> parent, _ cwd, ` cd, g~ cd (tab), gs change sort, gx open external, g. toggle hidden, g\ toggle trash, g? help, q close.
Key
Mode
Action
<leader>gg
Lazygit (cwd)
<leader>gf
Lazygit current file history
<leader>gl
Lazygit log (cwd)
<leader>gB
n, x
Git browse in browser
<leader>gc
Git commits (fzf)
<leader>gs
Git status (fzf)
<leader>gb
Git branches (fzf)
]h / [h
Next / prev hunk
]H / [H
Last / first hunk
<leader>ghs
n, x
Stage hunk
<leader>ghr
n, x
Reset hunk
<leader>ghS
Stage buffer
<leader>ghu
Undo stage hunk
<leader>ghR
Reset buffer
<leader>ghp
Preview hunk inline
<leader>ghb
Blame line (full)
<leader>ghB
Blame buffer
<leader>ghd
Diff this
<leader>ghD
Diff this (against HEAD~)
ih
o, x
Text object: gitsigns hunk
Tasks (overseer + bespoke wrappers)
Key
Action
<leader>tr
Run task (picker)
<leader>tt
Toggle task list
<leader>tl
Rerun last task
<leader>tj
just: pick and run recipe
<leader>tcc
CMake: configure
<leader>tcb / <leader>Cb
CMake: build
<leader>tct / <leader>Ct
CMake: test
<leader>tcr / <leader>Cr
CMake: launch target
<leader>tcsc
CMake: reselect configure preset
<leader>tcsb
CMake: reselect build preset
<leader>tcsl
CMake: reselect launch target
Key
Action
<leader>nr
Run nearest test
<leader>nf
Run file tests
<leader>nl
Re-run last test
<leader>nx
Stop running tests
<leader>ns
Toggle summary tree
<leader>no
Show test output (float)
<leader>np
Toggle output panel
<leader>nw
Watch file tests
]n / [n
Next / prev failed test
Key
Mode
Action
<leader>ac
Toggle Claude
<leader>af
Focus Claude
<leader>ar
Resume Claude
<leader>aC
Continue Claude
<leader>am
Select Claude model
<leader>ab
Add current buffer
<leader>as
v
Send to Claude
<leader>as
Add file (in tree-style buffers)
<leader>aa
Accept diff
<leader>ad
Deny diff
Copilot inline suggestions (insert mode)
Key
Action
<Right>
Accept suggestion
<S-Right>
Accept word
<C-S-Right>
Accept line
<C-Right> / <C-Left>
Next / prev suggestion
Completion (blink.cmp, insert mode)
Key
Action
<Tab> / <S-Tab>
Select next / prev
<CR>
Accept
<C-e>
Hide menu
<C-b> / <C-f>
Scroll docs up / down
<C-j> / <C-k>
Snippet jump forward / backward
UI toggles (snacks.toggle)
Each toggle notifies on/off state via the snacks notifier.
Key
Toggle
<leader>uf
Auto-format (buffer)
<leader>uF
Auto-format (global)
<leader>us
Spelling
<leader>uw
Wrap
<leader>ul
Line numbers
<leader>uL
Relative line numbers
<leader>ud
Diagnostics
<leader>uc
Conceal level
<leader>uh
Inlay hints
<leader>uT
Treesitter highlight
<leader>ub
Background light/dark
Sessions (persistence.nvim)
Key
Action
<leader>qs
Restore session for cwd
<leader>ql
Restore last session
<leader>qd
Don't save current session
Key
Mode
Action
<C-space>
n, x
Init / expand selection
<bs>
x
Shrink selection
af / if
o, x
Outer / inner function
ac / ic
o, x
Outer / inner class
aa / ia
o, x
Outer / inner parameter
]f / [f
Next / prev function start
]F / [F
Next / prev function end
]c / [c
Next / prev class start
]C / [C
Next / prev class end
[x
n
Jump up to enclosing context (nvim-treesitter-context; accepts a count)
Key
Action
]t / [t
Next / prev todo comment
LaTeX (vimtex, tex filetype)
Key
Action
<leader>Tcc
Compile
<leader>Tcl
Clean
<leader>Tcv
View PDF
<leader>Twc
Count words
<leader>Ti
Vimtex info
<leader>Te
Vimtex errors
Key
Mode
Action
<C-c>
Delete buffer (skipped in terminal buffers)
<C-`>
n, t
Toggle terminal (cwd; ignores Claude Code terminals)
<C-S-5>
t
Create new terminal
; / :
n
(in snacks terminals) noop with warning