Skip to content
Robin te Hofstee — Personal Blog
➜~cat/blog/nvim_keybindings.mdx

Neovim Default Keybindings

Jan 15, 20268 minNvimNeovimguide

Neovim Default Keybindings#

This document lists the default keybindings in Neovim (no plugins, no custom config).
For the full list, see :help index.

The default leader key is <Space>.

EffectModeShortcut
open vscode like command panelN<C-p>
sync pluginsN<leader>ps
clean pluginsN<leader>px
check plugins updateN<leader>pc
toggle nvim-treeN<C-n>
refresh nvim-treeN<leader>nr
toggle undotreeN<leader>u
Terminal
toggle vertical terminalN<A-\>/<F5>
toggle horizontal terminalN<C-\>
toggle floating terminalN<A-d>
quit terminalI<C-d>
Buffer navigation
pick buffer n(nmeans No)N<A-n>
right bufferN<A-j>
left bufferN<A-k>
move current buffer to rightN<A-S-j>
move current buffer to leftN<A-S-k>
close current bufferN<A-q>
close current windowN<A-S-q>
split buffer verticallyN<C-w>v
split buffer horizontallyN<C-w>s
navigate downN<C-j>
navigate upN<C-k>
navigate leftN<C-h>
navigate rightN<C-l>
Operaions in nvim-tree
new fileNa
remove file/directoryNd
rename file/directoryNr
open directoryNo/Enter
close directoryNo/Backspace
copy filenameNy
copy relative pathNY
copy absolute pathNgy
toggle file/directory begin with dotNH
toggle hidden file/directory configured in nvim-treeNI
Telescope Operations
find file in recently openedN<leader>fr
find keyword in current projectN<leader>fw
find file in current projectN<leader>ff
find buffer in opened buffersN<leader>fb
search for the string under cursor in cwdN<leader>fs
find file in historyN<leader>fe
find directory recorded by zoxideN<leader>fz
find projectN<leader>fp
Vanilla vim operations
escape insert modeIjk or kj
[fold current]/[unfold collapsed] blockI<S-Tab>
Use ; for :(Enter Command Mode)N;
Lsp operations by lspsaga.nvim
show code actionNga
preview definitionNgd
jump to definitionNgD
toggle tagbar(outline)Ngo
lsp rename in current fileNgr
rename in current projectNgR
show signature helpNgs
show current function/variable's definition or referencesNgh
request incoming calls from the language serverN<leader>ci
request outgoing calls from the language serverN<leader>co
show hover docNK
code diagnostics of the current lineN<leader>ld
Lsp operations bytrouble.nvim
toggle last diagnosticsNgt
toggle lsp referencesN<leader>tr
toggle lsp document diagnosticsN<leader>td
toggle lsp workspace diagnosticsN<leader>tw
toggle code quickfixN<leader>tq
toggle code loclistN<leader>tl
Code completion
next candidateI<Tab>/<C-n>
prev candidateI<S-Tab>/<C-p>
confirm candidateI<Enter>
close completion windowI<C-w>
Navigate in snippet
next snippet's blockI<Tab>
prev snippet's blockI<S-Tab>
Navigate in quote or bracket
jump to quote endI<A-l>
back to quote beginI<A-h>
Code selection
select current () blockNvab
select current {} blockNvaB
select current outer function blockNvaf
select current outer class blockNvac
select current inner function blockNvif
select current inner class blockNvic
Code-snip Run
Snip run for selected areaV<leader>r
Snip run for whole fileN<leader>r
Cursor movement
jump to one lineN<leader>j/<leader>k
find one wordN<leader>w
find one characterN<leader>c
find two characters below cursorN<leader>cc
find one characterx in front of cursorNFx
find one characterx behind cursorNfx
find next characterx follow directionN;
find prev characterx follow directionN,
next function beginN][
prev function beginN[[
next function endN]]
prev function endN[]
next unstage git hunkN]g
prev unstage git hunkN[g
next code diagnosticsNg]
prev code diagnosticsNg[
Code comment
toggle one line's commentNgcc
toggle selected lines' commentVgc
Markdown preview
toggle MarkdownPreViewN<F12>
Session management
Save current sessionN<leader>ss
Restore last sessionN<leader>sr
Delete last sessionN<leader>sd
Debug mode(supports c&cpp&rustgolang&python now)
Debug continue(run)NF6
Debug disconnectNF7
Debug toggle breakpointNF8
Debug step intoNF9
Debug step outNF10
Debug step overNF11
Debug run lastN<leader>dl
Debug run to cursorN<leader>dc
Debug set breakpoint with conditionN<leader>db
Debug open replN<leader>do
Git management
open lazygit in current directoryN<leader>g
Enter vim-fugitiveN<leader>G
Enter git diff viewN<leader>D
Close git diff viewN<leader><leader>D
Stage hunkN/V<leader>hs
Reset hunkN/V<leader>hr
Undo stage hunkN<leader>hu
Reset bufferN<leader>hR
Preview hunkN<leader>hp
Blame hunkN<leader>hb
crates.io support (Only available in Cargo.toml)
Toggle spec activitiesN<leader>ct
Reload crate specsN<leader>cr
Toggle pop-up windowN<leader>cs
Select spec versionsN<leader>cv
Select spec featuresN<leader>cf
Show project dependenciesN<leader>cd
Update current crate's specN<leader>cu
Update selected crate's specV<leader>cu
Update all crates' specsN<leader>ca
Upgrade current crateN<leader>cU
Upgrade selected cratesV<leader>cU
Upgrade all cratesN<leader>cA
Open current crate's homepageN<leader>cH
Open current crate's repositoryN<leader>cR
Open current crate's documentationN<leader>cD
Browse current crate on crates.ioN<leader>cC

You can see more keybindings in lua/core/mapping.lua and lua/keymap/init.lua.

Note:

  1. Put your cursor begin of the begin quote or bracket then press <A-l> you will jump to the end of the end quote or bracket.
  2. Put your cursor end of the end quote or bracket then press <A-h> you will jump to the begin of the begin quote or bracket.

Note: These are the vanilla Neovim defaults. Plugins like markdown.nvim or mdx.nvim may add their own mappings.