Neovim Keybindings Reference

Leader key: Space

Editing

KeyAction
<leader>wSave current buffer
;Enter command mode (:)
<C-j>Escape, in most modes
<C-k>Escape, in most modes; signature help in LSP normal mode
<F1>Escape
H / LStart / end of line
j / kMove by visual line
<leader>_Change text up to next _
<leader>oOpen nvim-tree file explorer
<leader>pPaste from Wayland clipboard
<leader>CCopy entire buffer to Wayland clipboard
<leader>,Toggle hidden/list characters
KeyAction
gbJump back in jumplist
gnJump forward in jumplist
<leader>bFuzzy file finder (proximity-sorted)
<leader>;Fuzzy buffer switcher
<leader><leader>Toggle between last two buffers
<left> / <right>Previous / next buffer
sLeap to target in current window
SLeap from another window
<leader>TToggle centered writing layout
KeyAction
<leader>sLive workspace symbol search (LSP)
<leader>gRipgrep project-wide (excludes Cargo.lock)
<leader>/Live grep in current file
<leader>xCurrent-buffer diagnostics picker
<leader>.Resume last fzf-lua picker
<leader>ORecent/old files picker
<leader>?Keymap picker
<C-h>Clear search highlight
n / NNext / previous search result, centered
* / #Search word forward / backward, centered
/ / ?Search with very-magic regex enabled

LSP

KeyAction
gdDefinitions picker with preview
gDDeclarations picker with preview
giImplementations picker with preview
grReferences picker with preview
gaCode actions through fzf-lua
KHover documentation
<C-k>Signature help
<leader>DType definitions picker with preview
<leader>SCurrent-document symbols / outline
<leader>lCombined LSP finder
<leader>rRename symbol
<leader>aNative LSP code actions
<leader>iToggle inlay hints for current buffer
<leader>fFormat buffer
<leader>eOpen diagnostic float
<leader>qPut diagnostics in the location list
[d / ]dPrevious / next diagnostic
[e / ]ePrevious / next error only
<leader>ciIncoming calls tree (stdlib/cargo filtered)
<leader>coOutgoing calls tree (stdlib/cargo filtered)

Call tree window keybindings

KeyAction
<Tab>Expand / collapse current node
EExpand all visible expandable nodes one level
cCollapse current node
CCollapse all expanded nodes
<CR>Jump to the definition of the symbol under cursor
oJump to the call site (where the call occurs)
q / <Esc>Close the tree
<leader>WaAdd workspace folder
<leader>WrRemove workspace folder
<leader>WlList workspace folders
<leader>meExpand macro
<leader>mlShow memory layout (limited to primitive types)
<leader>maShow assembly for function under cursor (cargo-show-asm)
<leader>miInsert #[inline(never)] above current line
<leader>mbRun cargo bench for current/selected bench target; prompts for criterion filter
<leader>mfRun cargo flamegraph for current/selected bench target; opens SVG when done
<leader>msRun cargo semver-checks (vs HEAD); violations shown in fzf-lua quickfix picker

File Explorer (nvim-tree)

Opening

KeyAction
<leader>oToggle nvim-tree
qClose nvim-tree
KeyAction
<CR>Open file / expand folder
<Tab>Preview file (focus stays tree)
<C-v>Open in vertical split
<C-x>Open in horizontal split
<C-t>Open in new tab
PJump to parent directory
-Navigate up to parent dir
WCollapse all folders
EExpand all folders

File Operations

KeyAction
aCreate file or directory
dDelete
rRename
xCut
cCopy
pPaste
yCopy filename
YCopy relative path
gyCopy absolute path

Display

KeyAction
HToggle hidden/dotfiles
IToggle gitignored files
RRefresh tree
fFilter files by name
FClear filter
g?Show all keybindings (help)

Crates (crates.nvim, Cargo.toml only)

General

KeyAction
<leader>ctToggle virtual text
<leader>crReload crate data

Popups

KeyAction
<leader>cvShow versions popup
<leader>cfShow features popup
<leader>cdShow dependencies popup

Update / Upgrade

KeyModeAction
<leader>cunormalUpdate crate under cursor
<leader>cuvisualUpdate selected crates
<leader>canormalUpdate all crates
<leader>cUnormalUpgrade crate under cursor
<leader>cUvisualUpgrade selected crates
<leader>cAnormalUpgrade all crates

Editing

KeyAction
<leader>ceExpand plain crate to inline table
<leader>cEExtract crate into [dependencies] table

Open in Browser

KeyAction
<leader>cHOpen homepage
<leader>cROpen repository
<leader>cDOpen documentation
<leader>cCOpen crates.io page
<leader>cLOpen lib.rs page

AI

KeyAction
<leader>ccOpen Claude Code
<leader>cxOpen Codex

Git

KeyAction
<leader>GGOpen Fugitive Git
<leader>BGit blame
<leader>GBGit browse

Testing (neotest)

KeyAction
<leader>trRun test under cursor
<leader>tlRe-run last test
<leader>tqStop current test run
<leader>tdDebug test under cursor
<leader>tfRun all tests in current file
<leader>taRun entire test suite
<leader>tsToggle test summary panel
<leader>toOpen test output
<leader>tpToggle output panel
]t / [tJump to next / previous failed test

Debugging (nvim-dap)

KeyAction
<leader>dbToggle breakpoint
<leader>dBConditional breakpoint
<leader>dcContinue
<leader>dnStep over
<leader>diStep into
<leader>doStep out
<leader>dhRun to cursor
<leader>deEvaluate expression
<leader>dqTerminate
<leader>duToggle DAP UI
<leader>dxClear all breakpoints

Dependencies To Fetch

Required / Core

DependencyUsed for
gitBootstrap/install plugins with lazy.nvim
curl / tarPlugin and Treesitter parser downloads
C compiler, e.g. ccCompiling Treesitter parsers
fzffzf-lua picker backend
ripgrep / rgProject grep through fzf-lua
fdFile finder input
proximity-sortProximity-ranked file finder
wl-clipboard (wl-copy, wl-paste)Wayland clipboard bindings

Rust / Debugging

DependencyUsed for
rust-analyzerRust LSP
cargoRust builds/tests
clippyrust-analyzer check command
cargo-nextestneotest-rust test runner
cargo-show-asm<leader>ma assembly viewer
cargo-flamegraph<leader>mf flamegraph generator
cargo-semver-checks<leader>ms semver violation checker
codelldb at /usr/bin/codelldbnvim-dap Rust debugging

Language Servers

DependencyUsed for
clangdC/C++/ObjC LSP
typescript-language-serverTypeScript/JavaScript LSP
goplsGo LSP
lua-language-serverLua LSP

Optional

DependencyUsed for
bash-language-serverBash LSP
texlabLaTeX LSP
ruffPython LSP/linting
zathuraVimTeX PDF viewer
tree-sitter CLIGenerating parsers; not normally needed for pinned nvim-treesitter master setup