Robin.te.Hofstee

Neovim Default Keybindings

Robin te Hofstee11 min readViews3
Neovim Default Keybindings

Reference list of Neovim's default key mappings.

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.

Share this post
Robin te Hofstee

Written by Robin te Hofstee

Technology enthusiast with a deep love for programming. Sharing practical guides on React, Next.js, Linux and self-hosting.