Skip to content

Neovim Cheat Sheet


Key Mode Purpose
Esc Normal Navigate, edit, command mode
i Insert Type text
a Insert Insert after cursor
o Insert Open new line below
O Insert Open new line above
v Visual Character selection
V Visual Line Line selection
Ctrl+v Visual Block Block/column selection
:cmd Command Run Ex commands

Key Action
h j k l Left, Down, Up, Right
w Next word start
b Previous word start
e Next word end
0 Start of line
$ End of line
^ First non-whitespace
gg Top of file
G Bottom of file
5G Line 5
f<char> Find char on line (forward)
F<char> Find char on line (backward)
; Repeat find
, Repeat find reverse
]f Next function (Treesitter)
[f Previous function (Treesitter)
]] / [[ Next/previous section
Ctrl+d Scroll half-page down
Ctrl+u Scroll half-page up
zz Center current line

Key Action
i Insert before cursor
a Insert after cursor
I Insert at start of line
A Insert at end of line
o Open line below
O Open line above
dd Delete (cut) line
yy Yank (copy) line
p Paste after cursor
P Paste before cursor
x Delete character
u Undo
Ctrl+r Redo
. Repeat last change
ci" Change inside quotes
ci( Change inside parentheses
ci{ Change inside braces
di" Delete inside quotes
da{ Delete a brace block
> Indent
< Outdent
>> Indent line
<< Outdent line
J Join lines
gw Format paragraph (LSP)
gc Comment/uncomment (Comment.nvim)
gcc Comment line
gci Change inner (Treesitter textobject)
af Select around function (Treesitter)
if Select inner function (Treesitter)

Key Action
/pattern Search forward
?pattern Search backward
n Next match
N Previous match
* Search word under cursor
Esc Clear search highlights
:%s/old/new/g Replace all in file
:%s/old/new/gc Replace all with confirm
:vimgrep /pattern/ **/* Grep project (uses ripgrep)

Key Action
:sp Split horizontal
:vsp Split vertical
Ctrl+w h/j/k/l Navigate windows
Ctrl+w = Equalize windows
Ctrl+w q Quit window
tn New tab (Space-leader)
tc Close tab (Space-leader)
tx Move current buffer to new tab
Ctrl+w < Shrink window
Ctrl+w > Grow window

Key Action
gd Go to definition
gr Find references
gi Go to implementation
K Hover documentation
gD Go to declaration
Space rn Rename symbol
Space ca Code action
Space ff Format document
Space si Signature help
[d Previous diagnostic
]d Next diagnostic
gl Line diagnostics (float)

Key Action
Ctrl+Space Open completion menu
Ctrl+n / Down Next item
Ctrl+p / Up Previous item
Ctrl+y Accept completion
Ctrl+e Close menu
Ctrl+k Signature help

Sources: LSP, path, snippets, buffer. Fuzzy: Rust-based, typo-resistant.


Key Action
Space f f Find files
Space f g Live grep (ripgrep)
Space f b Buffers
Space f h Help tags
Space f k Keymaps
<C-d> / <C-u> Scroll preview (in Telescope)

Key Action
Space g p Previous hunk
Space g n Next hunk
Space g h Preview hunk
Space g s Stage hunk
Space g r Reset hunk
v+Space g s Stage visual selection
v+Space g r Reset visual selection

Key Action
Space e Toggle tree
Space ec Close tree
<CR> Open file/directory
t Open in new tab
i Open split
s Open vsplit
D Delete file
R Rename
A Create new

Command Action
:Lazy Open plugin management UI
:Lazy sync Sync/update plugins
:Lazy clean Clean unused plugins
:Lazy health Plugin health check
:Lazy profile Startup performance profile

Command Action
:q Quit
:q! Quit without saving
:w Save
:wq Save and quit
:e Edit/reload file
:bd Delete buffer
:b# Switch to previous buffer
:ls List buffers
:checkhealth Check plugin health
:LspInfo LSP server status
:TSInfo Treesitter info
:Telescope All Telescope pickers
:noh Clear search highlights

bash, c, javascript, lua, markdown, python, query, rust, vim, vimdoc


Language Server(s)
Python pyright, ruff
TypeScript/JS ts_ls
Lua lua_ls
Bash bashls
YAML yamlls
Tailwind CSS tailwindcss
ESLint eslint