Neovim Keybindings Reference
Leader key: Space
Editing
| Key | Action |
|---|
<leader>w | Save 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 / L | Start / end of line |
j / k | Move by visual line |
<leader>_ | Change text up to next _ |
<leader>o | Open nvim-tree file explorer |
<leader>p | Paste from Wayland clipboard |
<leader>C | Copy entire buffer to Wayland clipboard |
<leader>, | Toggle hidden/list characters |
Navigation
| Key | Action |
|---|
gb | Jump back in jumplist |
gn | Jump forward in jumplist |
<leader>b | Fuzzy file finder (proximity-sorted) |
<leader>; | Fuzzy buffer switcher |
<leader><leader> | Toggle between last two buffers |
<left> / <right> | Previous / next buffer |
s | Leap to target in current window |
S | Leap from another window |
<leader>T | Toggle centered writing layout |
Search
| Key | Action |
|---|
<leader>s | Live workspace symbol search (LSP) |
<leader>g | Ripgrep project-wide (excludes Cargo.lock) |
<leader>/ | Live grep in current file |
<leader>x | Current-buffer diagnostics picker |
<leader>. | Resume last fzf-lua picker |
<leader>O | Recent/old files picker |
<leader>? | Keymap picker |
<C-h> | Clear search highlight |
n / N | Next / previous search result, centered |
* / # | Search word forward / backward, centered |
/ / ? | Search with very-magic regex enabled |
LSP
| Key | Action |
|---|
gd | Definitions picker with preview |
gD | Declarations picker with preview |
gi | Implementations picker with preview |
gr | References picker with preview |
ga | Code actions through fzf-lua |
K | Hover documentation |
<C-k> | Signature help |
<leader>D | Type definitions picker with preview |
<leader>S | Current-document symbols / outline |
<leader>l | Combined LSP finder |
<leader>r | Rename symbol |
<leader>a | Native LSP code actions |
<leader>i | Toggle inlay hints for current buffer |
<leader>f | Format buffer |
<leader>e | Open diagnostic float |
<leader>q | Put diagnostics in the location list |
[d / ]d | Previous / next diagnostic |
[e / ]e | Previous / next error only |
<leader>ci | Incoming calls tree (stdlib/cargo filtered) |
<leader>co | Outgoing calls tree (stdlib/cargo filtered) |
Call tree window keybindings
| Key | Action |
|---|
<Tab> | Expand / collapse current node |
E | Expand all visible expandable nodes one level |
c | Collapse current node |
C | Collapse all expanded nodes |
<CR> | Jump to the definition of the symbol under cursor |
o | Jump to the call site (where the call occurs) |
q / <Esc> | Close the tree |
<leader>Wa | Add workspace folder |
<leader>Wr | Remove workspace folder |
<leader>Wl | List workspace folders |
<leader>me | Expand macro |
<leader>ml | Show memory layout (limited to primitive types) |
<leader>ma | Show assembly for function under cursor (cargo-show-asm) |
<leader>mi | Insert #[inline(never)] above current line |
<leader>mb | Run cargo bench for current/selected bench target; prompts for criterion filter |
<leader>mf | Run cargo flamegraph for current/selected bench target; opens SVG when done |
<leader>ms | Run cargo semver-checks (vs HEAD); violations shown in fzf-lua quickfix picker |
| |
File Explorer (nvim-tree)
Opening
| Key | Action |
|---|
<leader>o | Toggle nvim-tree |
q | Close nvim-tree |
Navigation
| Key | Action |
|---|
<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 |
P | Jump to parent directory |
- | Navigate up to parent dir |
W | Collapse all folders |
E | Expand all folders |
File Operations
| Key | Action |
|---|
a | Create file or directory |
d | Delete |
r | Rename |
x | Cut |
c | Copy |
p | Paste |
y | Copy filename |
Y | Copy relative path |
gy | Copy absolute path |
Display
| Key | Action |
|---|
H | Toggle hidden/dotfiles |
I | Toggle gitignored files |
R | Refresh tree |
f | Filter files by name |
F | Clear filter |
g? | Show all keybindings (help) |
Crates (crates.nvim, Cargo.toml only)
General
| Key | Action |
|---|
<leader>ct | Toggle virtual text |
<leader>cr | Reload crate data |
| Key | Action |
|---|
<leader>cv | Show versions popup |
<leader>cf | Show features popup |
<leader>cd | Show dependencies popup |
Update / Upgrade
| Key | Mode | Action |
|---|
<leader>cu | normal | Update crate under cursor |
<leader>cu | visual | Update selected crates |
<leader>ca | normal | Update all crates |
<leader>cU | normal | Upgrade crate under cursor |
<leader>cU | visual | Upgrade selected crates |
<leader>cA | normal | Upgrade all crates |
Editing
| Key | Action |
|---|
<leader>ce | Expand plain crate to inline table |
<leader>cE | Extract crate into [dependencies] table |
Open in Browser
| Key | Action |
|---|
<leader>cH | Open homepage |
<leader>cR | Open repository |
<leader>cD | Open documentation |
<leader>cC | Open crates.io page |
<leader>cL | Open lib.rs page |
AI
| Key | Action |
|---|
<leader>cc | Open Claude Code |
<leader>cx | Open Codex |
Git
| Key | Action |
|---|
<leader>GG | Open Fugitive Git |
<leader>B | Git blame |
<leader>GB | Git browse |
Testing (neotest)
| Key | Action |
|---|
<leader>tr | Run test under cursor |
<leader>tl | Re-run last test |
<leader>tq | Stop current test run |
<leader>td | Debug test under cursor |
<leader>tf | Run all tests in current file |
<leader>ta | Run entire test suite |
<leader>ts | Toggle test summary panel |
<leader>to | Open test output |
<leader>tp | Toggle output panel |
]t / [t | Jump to next / previous failed test |
Debugging (nvim-dap)
| Key | Action |
|---|
<leader>db | Toggle breakpoint |
<leader>dB | Conditional breakpoint |
<leader>dc | Continue |
<leader>dn | Step over |
<leader>di | Step into |
<leader>do | Step out |
<leader>dh | Run to cursor |
<leader>de | Evaluate expression |
<leader>dq | Terminate |
<leader>du | Toggle DAP UI |
<leader>dx | Clear all breakpoints |
Dependencies To Fetch
Required / Core
| Dependency | Used for |
|---|
git | Bootstrap/install plugins with lazy.nvim |
curl / tar | Plugin and Treesitter parser downloads |
C compiler, e.g. cc | Compiling Treesitter parsers |
fzf | fzf-lua picker backend |
ripgrep / rg | Project grep through fzf-lua |
fd | File finder input |
proximity-sort | Proximity-ranked file finder |
wl-clipboard (wl-copy, wl-paste) | Wayland clipboard bindings |
Rust / Debugging
| Dependency | Used for |
|---|
rust-analyzer | Rust LSP |
cargo | Rust builds/tests |
clippy | rust-analyzer check command |
cargo-nextest | neotest-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/codelldb | nvim-dap Rust debugging |
Language Servers
| Dependency | Used for |
|---|
clangd | C/C++/ObjC LSP |
typescript-language-server | TypeScript/JavaScript LSP |
gopls | Go LSP |
lua-language-server | Lua LSP |
Optional
| Dependency | Used for |
|---|
bash-language-server | Bash LSP |
texlab | LaTeX LSP |
ruff | Python LSP/linting |
zathura | VimTeX PDF viewer |
tree-sitter CLI | Generating parsers; not normally needed for pinned nvim-treesitter master setup |