Complete Neovim / Vim keyboard shortcuts and commands reference — 594 shortcuts across 10 categories. Quick reference cheat sheet for Windows & Mac.
This is the ten-command starter card for Neovim (and Vim): modes, the two most common edits, undo, search and replace. It is deliberately minimal so a first session is not a wall; the full Vim page and the advanced quickref on this site go deeper. Neovim shares all of these with Vim, so the card applies to both.
| Shortcut | Action | What it does |
|---|---|---|
| Ctrl + @ | Insert previously inserted text and stop insert | Insert previously inserted text and stop insert. |
| Ctrl + A | Insert previously inserted text | Insert previously inserted text. |
| Ctrl + C | Quit insert mode, without checking for abbreviation | Quit insert mode, without checking for abbreviation. |
| Ctrl + D | Delete one shiftwidth of indent in the current line | Delete one shiftwidth of indent in the current line. |
| Ctrl + E | Insert the character which is below the cursor re-indent the current line) | Insert the character which is below the cursor re-indent the current line). |
| Ctrl + G Ctrl + J | Line down, to column where inserting started | Line down, to column where inserting started. |
| Ctrl + G j | Line down, to column where inserting started | Line down, to column where inserting started. |
| Ctrl + G Down | Line down, to column where inserting started | Line down, to column where inserting started. |
| Ctrl + G Ctrl + K | Line up, to column where inserting started | Line up, to column where inserting started. |
| Ctrl + G k | Line up, to column where inserting started | Line up, to column where inserting started. |
| Ctrl + G Up | Line up, to column where inserting started | Line up, to column where inserting started. |
| Ctrl + G u | Start new undoable edit | Start new undoable edit. |
| Ctrl + G U | Don't break undo with next cursor movement | Don't break undo with next cursor movement. |
| Backspace | Delete character before the cursor | Delete character before the cursor. |
| Ctrl + H | Same as <BS> | Same as <BS>. |
| Tab | Insert a <Tab> character | Insert a <Tab> character. |
| Ctrl + I | Same as <Tab> | Same as <Tab>. |
| <NL> | Same as <CR> | Same as <CR>. |
| Ctrl + J | Same as <CR> enter digraph | Same as <CR> enter digraph. |
| Enter | Begin new line | Begin new line. |
| Ctrl + M | Same as <CR> | Same as <CR>. |
| Ctrl + N | Find next match for keyword in front of the cursor | Find next match for keyword in front of the cursor. |
| Ctrl + O | Execute a single command and return to insert mode | Execute a single command and return to insert mode. |
| Ctrl + P | Find previous match for keyword in front of the cursor | Find previous match for keyword in front of the cursor. |
| Ctrl + Q | Same as CTRL-V, unless used for terminal control flow | Same as CTRL-V, unless used for terminal control flow. |
| Ctrl + T | Insert one shiftwidth of indent in current line | Insert one shiftwidth of indent in current line. |
| Ctrl + U | Delete all entered characters in the current line | Delete all entered characters in the current line. |
| Ctrl + V {char} | Insert next non-digit literally | Insert next non-digit literally. |
| Ctrl + W | Delete word before the cursor | Delete word before the cursor. |
| Ctrl + X {mode} | Enter CTRL-X sub mode, see | Enter CTRL-X sub mode, see. |
| Ctrl + Y | Insert the character which is above the cursor | Insert the character which is above the cursor. |
| Esc | End insert mode | End insert mode. |
| Ctrl + [ | Same as <Esc> | Same as <Esc>. |
| Ctrl + \ Ctrl + N | Go to Normal mode | Go to Normal mode. |
| Ctrl + \ Ctrl + G | Go to Normal mode | Go to Normal mode. |
| Ctrl + ] | Trigger abbreviation | Trigger abbreviation. |
| Ctrl + ^ | Toggle use of mappings | Toggle use of mappings. |
| Ctrl + _ | When 'allowrevins' set: toggle 'revins' | When 'allowrevins' set: toggle 'revins'. |
| 0 Ctrl + D | Delete all indent in the current line | Delete all indent in the current line. |
| ^ Ctrl + D | Delete all indent in the current line, restore it in the next line | Delete all indent in the current line, restore it in the next line. |
| Delete | Delete character under the cursor | Delete character under the cursor. |
| Left | Cursor one character left | Cursor one character left. |
| <S-Left> | Cursor one word left | Cursor one word left. |
| <C-Left> | Cursor one word left | Cursor one word left. |
| Right | Cursor one character right | Cursor one character right. |
| <S-Right> | Cursor one word right | Cursor one word right. |
| <C-Right> | Cursor one word right | Cursor one word right. |
| Up | Cursor one line up | Cursor one line up. |
| <S-Up> | Same as <PageUp> | Same as <PageUp>. |
| Down | Cursor one line down | Cursor one line down. |
| <S-Down> | Same as <PageDown> | Same as <PageDown>. |
| Home | Cursor to start of line | Cursor to start of line. |
| <C-Home> | Cursor to start of file | Cursor to start of file. |
| End | Cursor past end of line | Cursor past end of line. |
| <C-End> | Cursor past end of file | Cursor past end of file. |
| Page Up | One screenful backward | One screenful backward. |
| Page Down | One screenful forward | One screenful forward. |
| <F1> | Same as <Help> | Same as <Help>. |
| <Help> | Stop insert mode and display help window | Stop insert mode and display help window. |
| Insert | Toggle Insert/Replace mode | Toggle Insert/Replace mode. |
| <LeftMouse> | Cursor at mouse click | Cursor at mouse click. |
| <ScrollWheelDown> | Move window three lines down | Move window three lines down. |
| <S-ScrollWheelDown> | Move window one page down | Move window one page down. |
| <ScrollWheelUp> | Move window three lines up | Move window three lines up. |
| <S-ScrollWheelUp> | Move window one page up | Move window one page up. |
| <ScrollWheelLeft> | Move window six columns left | Move window six columns left. |
| <S-ScrollWheelLeft> | Move window one page left | Move window one page left. |
| <ScrollWheelRight> | Move window six columns right | Move window six columns right. |
| <S-ScrollWheelRight> | Move window one page right | Move window one page right. |
| Ctrl + X Ctrl + D | Complete defined identifiers | Complete defined identifiers. |
| Ctrl + X Ctrl + E | Scroll up | Scroll up. |
| Ctrl + X Ctrl + F | Complete file names | Complete file names. |
| Ctrl + X Ctrl + I | Complete identifiers | Complete identifiers. |
| Ctrl + X Ctrl + K | Complete identifiers from dictionary | Complete identifiers from dictionary. |
| Ctrl + X Ctrl + L | Complete whole lines | Complete whole lines. |
| Ctrl + X Ctrl + N | Next completion | Next completion. |
| Ctrl + X Ctrl + O | Omni completion | Omni completion. |
| Ctrl + X Ctrl + P | Previous completion | Previous completion. |
| Ctrl + X Ctrl + R | Complete contents from registers | Complete contents from registers. |
| Ctrl + X Ctrl + S | Spelling suggestions | Spelling suggestions. |
| Ctrl + X Ctrl + T | Complete identifiers from thesaurus | Complete identifiers from thesaurus. |
| Ctrl + X Ctrl + Y | Scroll down | Scroll down. |
| Ctrl + X Ctrl + U | Complete with 'completefunc' | Complete with 'completefunc'. |
| Ctrl + X Ctrl + V | Complete like in : command line | Complete like in : command line. |
| Ctrl + X Ctrl + Z | Stop completion, text is unchanged | Stop completion, text is unchanged. |
| Ctrl + X Ctrl + ] | Complete tags | Complete tags. |
| Ctrl + X s | Spelling suggestions | Spelling suggestions. |
| Shortcut | Action | What it does |
|---|---|---|
| Ctrl + A | 2 add N to number at/after cursor | 2 add N to number at/after cursor. |
| Ctrl + B | 1 scroll N screens Backwards | 1 scroll N screens Backwards. |
| Ctrl + C | Interrupt current (search) command | Interrupt current (search) command. |
| Ctrl + D | Scroll Down N lines (default: half a screen) | Scroll Down N lines (default: half a screen). |
| Ctrl + E | Scroll N lines upwards (N lines Extra) | Scroll N lines upwards (N lines Extra). |
| Ctrl + F | 1 scroll N screens Forward | 1 scroll N screens Forward. |
| Ctrl + G | Display current file name and position | Display current file name and position. |
| Backspace | 1 same as "h" | 1 same as "h". |
| Ctrl + H | 1 same as "h" | 1 same as "h". |
| Tab | 1 go to N newer entry in jump list | 1 go to N newer entry in jump list. |
| Ctrl + I | 1 same as <Tab> | 1 same as <Tab>. |
| <NL> | 1 same as "j" | 1 same as "j". |
| <S-NL> | 1 same as CTRL-F | 1 same as CTRL-F. |
| Ctrl + J | 1 same as "j" | 1 same as "j". |
| Ctrl + L | Redraw screen | Redraw screen. |
| Enter | 1 cursor to the first CHAR N lines lower | 1 cursor to the first CHAR N lines lower. |
| <S-CR> | 1 same as CTRL-F | 1 same as CTRL-F. |
| Ctrl + M | 1 same as <CR> | 1 same as <CR>. |
| Ctrl + N | 1 same as "j" | 1 same as "j". |
| Ctrl + O | 1 go to N older entry in jump list | 1 go to N older entry in jump list. |
| Ctrl + P | 1 same as "k" | 1 same as "k". |
| Ctrl + R | 2 redo changes which were undone with 'u' | 2 redo changes which were undone with 'u'. |
| Ctrl + T | Jump to N older Tag in tag list | Jump to N older Tag in tag list. |
| Ctrl + U | Scroll N lines Upwards (default: half a screen) | Scroll N lines Upwards (default: half a screen). |
| Ctrl + V | Start blockwise Visual mode | Start blockwise Visual mode. |
| Ctrl + W {char} | Window commands, see | Window commands, see. |
| Ctrl + X | 2 subtract N from number at/after cursor | 2 subtract N from number at/after cursor. |
| Ctrl + Y | Scroll N lines downwards | Scroll N lines downwards. |
| Ctrl + Z | Suspend program (or start new shell) | Suspend program (or start new shell). |
| Ctrl + \ Ctrl + N | Go to Normal mode (no-op) | Go to Normal mode (no-op). |
| Ctrl + \ Ctrl + G | Go to Normal mode (no-op) | Go to Normal mode (no-op). |
| Ctrl + ] | :ta to ident under cursor | :ta to ident under cursor. |
| Ctrl + ^ | Edit Nth alternate file (equivalent to ":e #N") | Edit Nth alternate file (equivalent to ":e #N"). |
| Ctrl + Tab | Same as `g<Tab>` : go to last accessed tab page | Same as `g<Tab>` : go to last accessed tab page. |
| Space | 1 same as "l" | 1 same as "l". |
| !{motion}{filter} | 2 filter Nmove text through the {filter} command | 2 filter Nmove text through the {filter} command. |
| !!{filter} | 2 filter N lines through the {filter} command | 2 filter N lines through the {filter} command. |
| "{register} | Use {register} for next delete, yank or put ({.%#:} only work with put) | Use {register} for next delete, yank or put ({.%#:} only work with put). |
| # | 1 search backward for the Nth occurrence of the ident under the cursor | 1 search backward for the Nth occurrence of the ident under the cursor. |
| $ | 1 cursor to the end of Nth next line | 1 cursor to the end of Nth next line. |
| {count}% | 1 go to N percentage in the file | 1 go to N percentage in the file. |
| & | 2 repeat last :s | 2 repeat last :s. |
| '{a-zA-Z0-9} | 1 cursor to the first CHAR on the line with mark {a-zA-Z0-9} | 1 cursor to the first CHAR on the line with mark {a-zA-Z0-9}. |
| '' | 1 cursor to the first CHAR of the line where the cursor was before the latest jump | 1 cursor to the first CHAR of the line where the cursor was before the latest jump. |
| '( | 1 cursor to the first CHAR on the line of the start of the current sentence | 1 cursor to the first CHAR on the line of the start of the current sentence. |
| ') | 1 cursor to the first CHAR on the line of the end of the current sentence | 1 cursor to the first CHAR on the line of the end of the current sentence. |
| '< | 1 cursor to the first CHAR of the line where highlighted area starts/started in the current buffer | 1 cursor to the first CHAR of the line where highlighted area starts/started in the current buffer. |
| '> | 1 cursor to the first CHAR of the line where highlighted area ends/ended in the current buffer | 1 cursor to the first CHAR of the line where highlighted area ends/ended in the current buffer. |
| '[ | 1 cursor to the first CHAR on the line of the start of last operated text or start of put text | 1 cursor to the first CHAR on the line of the start of last operated text or start of put text. |
| '] | 1 cursor to the first CHAR on the line of the end of last operated text or end of put text | 1 cursor to the first CHAR on the line of the end of last operated text or end of put text. |
| '{ | 1 cursor to the first CHAR on the line of the start of the current paragraph | 1 cursor to the first CHAR on the line of the start of the current paragraph. |
| '} | 1 cursor to the first CHAR on the line of the end of the current paragraph | 1 cursor to the first CHAR on the line of the end of the current paragraph. |
| ( | 1 cursor N sentences backward | 1 cursor N sentences backward. |
| ) | 1 cursor N sentences forward | 1 cursor N sentences forward. |
| * | 1 search forward for the Nth occurrence of the ident under the cursor | 1 search forward for the Nth occurrence of the ident under the cursor. |
| + | 1 same as <CR> | 1 same as <CR>. |
| <S-+> | 1 same as CTRL-F | 1 same as CTRL-F. |
| , | 1 repeat latest f, t, F or T in opposite direction N times | 1 repeat latest f, t, F or T in opposite direction N times. |
| - | 1 cursor to the first CHAR N lines higher | 1 cursor to the first CHAR N lines higher. |
| <S--> | 1 same as CTRL-B | 1 same as CTRL-B. |
| . | 2 repeat last change with count replaced with N | 2 repeat last change with count replaced with N. |
| /{pattern}Enter | 1 search forward for the Nth occurrence of {pattern} | 1 search forward for the Nth occurrence of {pattern}. |
| /Enter | 1 search forward for {pattern} of last search | 1 search forward for {pattern} of last search. |
| 0 | 1 cursor to the first char of the line | 1 cursor to the first char of the line. |
| 1 | Prepend to command to give a count | Prepend to command to give a count. |
| 2 | " | ". |
| 3 | " | ". |
| 4 | " | ". |
| 5 | " | ". |
| 6 | " | ". |
| 7 | " | ". |
| 8 | " | ". |
| 9 | " | ". |
| : | 1 start entering an Ex command | 1 start entering an Ex command. |
| {count}: | Start entering an Ex command with range from current line to N-1 lines down | Start entering an Ex command with range from current line to N-1 lines down. |
| ; | 1 repeat latest f, t, F or T N times | 1 repeat latest f, t, F or T N times. |
| <{motion} | 2 shift Nmove lines one 'shiftwidth' leftwards | 2 shift Nmove lines one 'shiftwidth' leftwards. |
| << | 2 shift N lines one 'shiftwidth' leftwards | 2 shift N lines one 'shiftwidth' leftwards. |
| ={motion} | 2 filter Nmove lines through "indent" | 2 filter Nmove lines through "indent". |
| == | 2 filter N lines through "indent" | 2 filter N lines through "indent". |
| >{motion} | 2 shift Nmove lines one 'shiftwidth' rightwards | 2 shift Nmove lines one 'shiftwidth' rightwards. |
| >> | 2 shift N lines one 'shiftwidth' rightwards | 2 shift N lines one 'shiftwidth' rightwards. |
| ?{pattern}Enter | 1 search backward for the Nth previous occurrence of {pattern} | 1 search backward for the Nth previous occurrence of {pattern}. |
| ?Enter | 1 search backward for {pattern} of last search | 1 search backward for {pattern} of last search. |
| @{a-z} | 2 execute the contents of register {a-z} N times | 2 execute the contents of register {a-z} N times. |
| @: | Repeat the previous ":" command N times | Repeat the previous ":" command N times. |
| @@ | 2 repeat the previous @{a-z} N times | 2 repeat the previous @{a-z} N times. |
| A | 2 append text after the end of the line N times | 2 append text after the end of the line N times. |
| B | 1 cursor N WORDS backward | 1 cursor N WORDS backward. |
| ["x]C | 2 change from the cursor position to the end of the line, and N-1 more lines [into register x]; synonym for "c$" | 2 change from the cursor position to the end of the line, and N-1 more lines [into register x]; synonym for "c$". |
| ["x]D | 2 delete the characters under the cursor until the end of the line and N-1 more lines [into register x]; synonym for "d$" | 2 delete the characters under the cursor until the end of the line and N-1 more lines [into register x]; synonym for "d$". |
| E | 1 cursor forward to the end of WORD N | 1 cursor forward to the end of WORD N. |
| F{char} | 1 cursor to the Nth occurrence of {char} to the left | 1 cursor to the Nth occurrence of {char} to the left. |
| G | 1 cursor to line N, default last line | 1 cursor to line N, default last line. |
| H | 1 cursor to line N from top of screen | 1 cursor to line N from top of screen. |
| I | 2 insert text before the first CHAR on the line N times | 2 insert text before the first CHAR on the line N times. |
| J | 2 Join N lines; default is 2 | 2 Join N lines; default is 2. |
| K | Lookup Keyword under the cursor with 'keywordprg' | Lookup Keyword under the cursor with 'keywordprg'. |
| L | 1 cursor to line N from bottom of screen | 1 cursor to line N from bottom of screen. |
| M | 1 cursor to middle line of screen | 1 cursor to middle line of screen. |
| N | 1 repeat the latest '/' or '?' N times in opposite direction | 1 repeat the latest '/' or '?' N times in opposite direction. |
| O | 2 begin a new line above the cursor and insert text, repeat N times | 2 begin a new line above the cursor and insert text, repeat N times. |
| ["x]P | 2 put the text [from register x] before the cursor N times | 2 put the text [from register x] before the cursor N times. |
| R | 2 enter replace mode: overtype existing characters, repeat the entered text N-1 times | 2 enter replace mode: overtype existing characters, repeat the entered text N-1 times. |
| ["x]S | 2 delete N lines [into register x] and start insert; synonym for "cc" | 2 delete N lines [into register x] and start insert; synonym for "cc". |
| T{char} | 1 cursor till after Nth occurrence of {char} to the left | 1 cursor till after Nth occurrence of {char} to the left. |
| U | 2 undo all latest changes on one line | 2 undo all latest changes on one line. |
| V | Start linewise Visual mode | Start linewise Visual mode. |
| W | 1 cursor N WORDS forward | 1 cursor N WORDS forward. |
| ["x]X | 2 delete N characters before the cursor [into register x] | 2 delete N characters before the cursor [into register x]. |
| ["x]Y | Yank N lines [into register x]; synonym for "yy" Note: Mapped to "y$" by default. | Yank N lines [into register x]; synonym for "yy" Note: Mapped to "y$" by default.. |
| ZZ | Write if buffer changed and close window | Write if buffer changed and close window. |
| ZQ | Close window without writing | Close window without writing. |
| [{char} | Square bracket command (see below) | Square bracket command (see below). |
| ]{char} | Square bracket command (see below) | Square bracket command (see below). |
| ^ | 1 cursor to the first CHAR of the line | 1 cursor to the first CHAR of the line. |
| _ | 1 cursor to the first CHAR N - 1 lines lower | 1 cursor to the first CHAR N - 1 lines lower. |
| `{a-zA-Z0-9} | 1 cursor to the mark {a-zA-Z0-9} | 1 cursor to the mark {a-zA-Z0-9}. |
| `( | 1 cursor to the start of the current sentence | 1 cursor to the start of the current sentence. |
| `) | 1 cursor to the end of the current sentence | 1 cursor to the end of the current sentence. |
| `< | 1 cursor to the start of the highlighted area | 1 cursor to the start of the highlighted area. |
| `> | 1 cursor to the end of the highlighted area | 1 cursor to the end of the highlighted area. |
| `[ | 1 cursor to the start of last operated text or start of putted text | 1 cursor to the start of last operated text or start of putted text. |
| `] | 1 cursor to the end of last operated text or end of putted text | 1 cursor to the end of last operated text or end of putted text. |
| "``" | 1 cursor to the position before latest jump | 1 cursor to the position before latest jump. |
| `{ | 1 cursor to the start of the current paragraph | 1 cursor to the start of the current paragraph. |
| `} | 1 cursor to the end of the current paragraph | 1 cursor to the end of the current paragraph. |
| a | 2 append text after the cursor N times | 2 append text after the cursor N times. |
| b | 1 cursor N words backward | 1 cursor N words backward. |
| ["x]c{motion} | 2 delete Nmove text [into register x] and start insert | 2 delete Nmove text [into register x] and start insert. |
| ["x]cc | 2 delete N lines [into register x] and start insert | 2 delete N lines [into register x] and start insert. |
| ["x]d{motion} | 2 delete Nmove text [into register x] | 2 delete Nmove text [into register x]. |
| ["x]dd | 2 delete N lines [into register x] | 2 delete N lines [into register x]. |
| do | 2 same as ":diffget" | 2 same as ":diffget". |
| dp | 2 same as ":diffput" | 2 same as ":diffput". |
| e | 1 cursor forward to the end of word N | 1 cursor forward to the end of word N. |
| f{char} | 1 cursor to Nth occurrence of {char} to the right | 1 cursor to Nth occurrence of {char} to the right. |
| g{char} | Extended commands, see below | Extended commands, see below. |
| h | 1 cursor N chars to the left | 1 cursor N chars to the left. |
| i | 2 insert text before the cursor N times | 2 insert text before the cursor N times. |
| j | 1 cursor N lines downward | 1 cursor N lines downward. |
| k | 1 cursor N lines upward | 1 cursor N lines upward. |
| l | 1 cursor N chars to the right | 1 cursor N chars to the right. |
| m{A-Za-z} | Set mark {A-Za-z} at cursor position | Set mark {A-Za-z} at cursor position. |
| n | 1 repeat the latest '/' or '?' N times | 1 repeat the latest '/' or '?' N times. |
| o | 2 begin a new line below the cursor and insert text, repeat N times | 2 begin a new line below the cursor and insert text, repeat N times. |
| ["x]p | 2 put the text [from register x] after the cursor N times | 2 put the text [from register x] after the cursor N times. |
| q{0-9a-zA-Z"} | Record typed characters into named register {0-9a-zA-Z"} (uppercase to append) | Record typed characters into named register {0-9a-zA-Z"} (uppercase to append). |
| q | (while recording) stops recording | (while recording) stops recording. |
| Q | Place/remove a multicursor; with [count]: place at each search match | Place/remove a multicursor; with [count]: place at each search match. |
| [count]q: | Edit : command-line in command-line window, with [count]: switch to | Edit : command-line in command-line window, with [count]: switch to. |
| q/ | Edit / command-line in command-line window | Edit / command-line in command-line window. |
| q? | Edit ? command-line in command-line window | Edit ? command-line in command-line window. |
| r{char} | 2 replace N chars with {char} | 2 replace N chars with {char}. |
| ["x]s | 2 (substitute) delete N characters [into register x] and start insert | 2 (substitute) delete N characters [into register x] and start insert. |
| t{char} | 1 cursor till before Nth occurrence of {char} to the right | 1 cursor till before Nth occurrence of {char} to the right. |
| u | 2 undo changes | 2 undo changes. |
| v | Start charwise Visual mode | Start charwise Visual mode. |
| w | 1 cursor N words forward | 1 cursor N words forward. |
| ["x]x | 2 delete N characters under and after the cursor [into register x] | 2 delete N characters under and after the cursor [into register x]. |
| ["x]y{motion} | Yank Nmove text [into register x] | Yank Nmove text [into register x]. |
| ["x]yy | Yank N lines [into register x] | Yank N lines [into register x]. |
| z{char} | Commands starting with 'z', see below | Commands starting with 'z', see below. |
| { | 1 cursor N paragraphs backward | 1 cursor N paragraphs backward. |
| | | 1 cursor to column N | 1 cursor to column N. |
| } | 1 cursor N paragraphs forward | 1 cursor N paragraphs forward. |
| ~ | 2 'tildeop' off: switch case of N characters under cursor and move the cursor N characters to the right | 2 'tildeop' off: switch case of N characters under cursor and move the cursor N characters to the right. |
| ~{motion} | 'tildeop' on: switch case of Nmove text | 'tildeop' on: switch case of Nmove text. |
| <C-End> | 1 same as "G" | 1 same as "G". |
| <C-Home> | 1 same as "gg" | 1 same as "gg". |
| <C-Left> | 1 same as "b" | 1 same as "b". |
| <C-LeftMouse> | Place a multicursor at mouse-click | Place a multicursor at mouse-click. |
| <C-Right> | 1 same as "w" | 1 same as "w". |
| <C-RightMouse> | Same as "CTRL-T" | Same as "CTRL-T". |
| <C-Tab> | Same as "g<Tab>" | Same as "g<Tab>". |
| ["x]Delete | 2 same as "x" | 2 same as "x". |
| {count}Delete | Remove the last digit from {count} | Remove the last digit from {count}. |
| Down | 1 same as "j" | 1 same as "j". |
| End | 1 same as "$" | 1 same as "$". |
| <F1> | Same as <Help> | Same as <Help>. |
| <Help> | Open a help window | Open a help window. |
| Home | 1 same as "0" | 1 same as "0". |
| Insert | 2 same as "i" | 2 same as "i". |
| Left | 1 same as "h" | 1 same as "h". |
| <LeftMouse> | 1 move cursor to the mouse click position | 1 move cursor to the mouse click position. |
| <MiddleMouse> | 2 same as "gP" at the mouse click position | 2 same as "gP" at the mouse click position. |
| Page Down | Same as CTRL-F | Same as CTRL-F. |
| Page Up | Same as CTRL-B | Same as CTRL-B. |
| Right | 1 same as "l" | 1 same as "l". |
| <RightMouse> | Start Visual mode, move cursor to the mouse click position | Start Visual mode, move cursor to the mouse click position. |
| <S-Down> | 1 same as CTRL-F | 1 same as CTRL-F. |
| <S-Left> | 1 same as "b" | 1 same as "b". |
| <S-LeftMouse> | Same as "*" at the mouse click position | Same as "*" at the mouse click position. |
| <S-Right> | 1 same as "w" | 1 same as "w". |
| <S-RightMouse> | Same as "#" at the mouse click position | Same as "#" at the mouse click position. |
| <S-Up> | 1 same as CTRL-B | 1 same as CTRL-B. |
| <Undo> | 2 same as "u" | 2 same as "u". |
| Up | 1 same as "k" | 1 same as "k". |
| Shortcut | Action | What it does |
|---|---|---|
| a" | Double quoted string | Double quoted string. |
| a' | Single quoted string | Single quoted string. |
| a( | Same as ab | Same as ab. |
| a) | Same as ab | Same as ab. |
| a< | "a <>" from '<' to the matching '>' | "a <>" from '<' to the matching '>'. |
| a> | Same as a< | Same as a<. |
| aB | "a Block" from `[{` to `]}` (with brackets) | "a Block" from `[{` to `]}` (with brackets). |
| aW | "a WORD" (with white space) | "a WORD" (with white space). |
| a[ | "a []" from '[' to the matching ']' | "a []" from '[' to the matching ']'. |
| a] | Same as a[ | Same as a[. |
| a` | String in backticks | String in backticks. |
| ab | "a block" from "[(" to "])" (with braces) | "a block" from "[(" to "])" (with braces). |
| al | All lines (entire buffer) | All lines (entire buffer). |
| ap | "a paragraph" (with white space) | "a paragraph" (with white space). |
| as | "a sentence" (with white space) | "a sentence" (with white space). |
| at | "a tag block" (with white space) | "a tag block" (with white space). |
| aw | "a word" (with white space) | "a word" (with white space). |
| a{ | Same as aB | Same as aB. |
| a} | Same as aB | Same as aB. |
| i" | Double quoted string without the quotes | Double quoted string without the quotes. |
| i' | Single quoted string without the quotes | Single quoted string without the quotes. |
| i( | Same as ib | Same as ib. |
| i) | Same as ib | Same as ib. |
| i< | "inner <>" from '<' to the matching '>' | "inner <>" from '<' to the matching '>'. |
| i> | Same as i< | Same as i<. |
| iB | "inner Block" from `[{` and `]}` | "inner Block" from `[{` and `]}`. |
| iW | "inner WORD" | "inner WORD". |
| i[ | "inner []" from '[' to the matching ']' | "inner []" from '[' to the matching ']'. |
| i] | Same as i[ | Same as i[. |
| i` | String in backticks without the backticks | String in backticks without the backticks. |
| ib | "inner block" from "[(" to "])" | "inner block" from "[(" to "])". |
| il | Inner line (without surrounding whitespace) | Inner line (without surrounding whitespace). |
| ip | "inner paragraph" | "inner paragraph". |
| is | "inner sentence" | "inner sentence". |
| it | "inner tag block" | "inner tag block". |
| iw | "inner word" | "inner word". |
| i{ | Same as iB | Same as iB. |
| i} | Same as iB | Same as iB. |
| Shortcut | Action | What it does |
|---|---|---|
| Ctrl + W + | Increase current window height N lines | Increase current window height N lines. |
| Ctrl + W - | Decrease current window height N lines | Decrease current window height N lines. |
| Ctrl + W < | Decrease current window width N columns | Decrease current window width N columns. |
| Ctrl + W = | Make all windows the same height & width | Make all windows the same height & width. |
| Ctrl + W > | Increase current window width N columns | Increase current window width N columns. |
| Ctrl + W H | Move current window to the far left | Move current window to the far left. |
| Ctrl + W J | Move current window to the very bottom | Move current window to the very bottom. |
| Ctrl + W K | Move current window to the very top | Move current window to the very top. |
| Ctrl + W L | Move current window to the far right | Move current window to the far right. |
| Ctrl + W P | Go to preview window | Go to preview window. |
| Ctrl + W R | Rotate windows upwards N times | Rotate windows upwards N times. |
| Ctrl + W T | Move current window to a new tabpage | Move current window to a new tabpage. |
| Ctrl + W W | Go to N previous window (wrap around) | Go to N previous window (wrap around). |
| Ctrl + W ] | Split window and jump to tag under cursor | Split window and jump to tag under cursor. |
| Ctrl + W ^ | Split current window and edit alternate file N | Split current window and edit alternate file N. |
| Ctrl + W _ | Set current window height to N (default: very high) | Set current window height to N (default: very high). |
| Ctrl + W b | Go to bottom window | Go to bottom window. |
| Ctrl + W c | Close current window (like ) | Close current window (like ). |
| Ctrl + W d | Split window and jump to definition under the cursor | Split window and jump to definition under the cursor. |
| Ctrl + W f | Split window and edit file name under the cursor | Split window and edit file name under the cursor. |
| Ctrl + W h | Go to Nth left window (stop at first window) | Go to Nth left window (stop at first window). |
| Ctrl + W i | Split window and jump to declaration of identifier under the cursor | Split window and jump to declaration of identifier under the cursor. |
| Ctrl + W j | Go N windows down (stop at last window) | Go N windows down (stop at last window). |
| Ctrl + W k | Go N windows up (stop at first window) | Go N windows up (stop at first window). |
| Ctrl + W l | Go to Nth right window (stop at last window) | Go to Nth right window (stop at last window). |
| Ctrl + W n | Open new window, N lines high | Open new window, N lines high. |
| Ctrl + W o | Close all but current window (like ) | Close all but current window (like ). |
| Ctrl + W p | Go to previous (last accessed) window | Go to previous (last accessed) window. |
| Ctrl + W q | Quit current window (like ) | Quit current window (like ). |
| Ctrl + W r | Rotate windows downwards N times | Rotate windows downwards N times. |
| Ctrl + W s | Split current window in two parts, new window N lines high | Split current window in two parts, new window N lines high. |
| Ctrl + W t | Go to top window | Go to top window. |
| Ctrl + W v | Split current window vertically, new window N columns wide | Split current window vertically, new window N columns wide. |
| Ctrl + W w | Go to N next window (wrap around) | Go to N next window (wrap around). |
| Ctrl + W x | Exchange current window with window N (default: next window) | Exchange current window with window N (default: next window). |
| Ctrl + W z | Close preview window | Close preview window. |
| Ctrl + W | | Set window width to N columns | Set window width to N columns. |
| Ctrl + W } | Show tag under cursor in preview window | Show tag under cursor in preview window. |
| Shortcut | Action | What it does |
|---|---|---|
| gg | 1 cursor to line N, default first line | 1 cursor to line N, default first line. |
| Shortcut | Action | What it does |
|---|---|---|
| zEnter | Redraw, cursor line to top of window, cursor on first non-blank | Redraw, cursor line to top of window, cursor on first non-blank. |
| z{height}Enter | Redraw, make window {height} lines high | Redraw, make window {height} lines high. |
| z+ | Cursor on line N (default line below window), otherwise like "z<CR>" | Cursor on line N (default line below window), otherwise like "z<CR>". |
| z- | Redraw, cursor line at bottom of window, cursor on first non-blank | Redraw, cursor line at bottom of window, cursor on first non-blank. |
| z. | Redraw, cursor line to center of window, cursor on first non-blank | Redraw, cursor line to center of window, cursor on first non-blank. |
| z= | Give spelling suggestions | Give spelling suggestions. |
| zA | Open a closed fold or close an open fold recursively | Open a closed fold or close an open fold recursively. |
| zC | Close folds recursively | Close folds recursively. |
| zD | Delete folds recursively | Delete folds recursively. |
| zE | Eliminate all folds | Eliminate all folds. |
| zF | Create a fold for N lines | Create a fold for N lines. |
| zG | Temporarily mark word as correctly spelled | Temporarily mark word as correctly spelled. |
| zH | When 'wrap' off scroll half a screenwidth to the right | When 'wrap' off scroll half a screenwidth to the right. |
| zL | When 'wrap' off scroll half a screenwidth to the left | When 'wrap' off scroll half a screenwidth to the left. |
| zM | Set 'foldlevel' to zero | Set 'foldlevel' to zero. |
| zN | Set 'foldenable' | Set 'foldenable'. |
| zO | Open folds recursively | Open folds recursively. |
| zR | Set 'foldlevel' to the deepest fold | Set 'foldlevel' to the deepest fold. |
| zW | Temporarily mark word as incorrectly spelled | Temporarily mark word as incorrectly spelled. |
| zX | Re-apply 'foldlevel' | Re-apply 'foldlevel'. |
| z^ | Cursor on line N (default line above window), otherwise like "z-" | Cursor on line N (default line above window), otherwise like "z-". |
| za | Open a closed fold, close an open fold | Open a closed fold, close an open fold. |
| zb | Redraw, cursor line at bottom of window | Redraw, cursor line at bottom of window. |
| zc | Close a fold | Close a fold. |
| zd | Delete a fold | Delete a fold. |
| ze | When 'wrap' off scroll horizontally to position the cursor at the end (right side) of the screen | When 'wrap' off scroll horizontally to position the cursor at the end (right side) of the screen. |
| zf{motion} | Create a fold for Nmove text | Create a fold for Nmove text. |
| zg | Permanently mark word as correctly spelled | Permanently mark word as correctly spelled. |
| zh | When 'wrap' off scroll screen N characters to the right | When 'wrap' off scroll screen N characters to the right. |
| zi | Toggle 'foldenable' | Toggle 'foldenable'. |
| zj | 1 move to the start of the next fold | 1 move to the start of the next fold. |
| zk | 1 move to the end of the previous fold | 1 move to the end of the previous fold. |
| zl | When 'wrap' off scroll screen N characters to the left | When 'wrap' off scroll screen N characters to the left. |
| zm | Subtract one from 'foldlevel' | Subtract one from 'foldlevel'. |
| zn | Reset 'foldenable' | Reset 'foldenable'. |
| zo | Open fold | Open fold. |
| zp | Paste in block-mode without trailing spaces | Paste in block-mode without trailing spaces. |
| zP | Paste in block-mode without trailing spaces | Paste in block-mode without trailing spaces. |
| zr | Add one to 'foldlevel' | Add one to 'foldlevel'. |
| zs | When 'wrap' off scroll horizontally to position the cursor at the start (left side) of the screen | When 'wrap' off scroll horizontally to position the cursor at the start (left side) of the screen. |
| zt | Redraw, cursor line at top of window | Redraw, cursor line at top of window. |
| zuw | Undo | Undo. |
| zug | Undo | Undo. |
| zuW | Undo | Undo. |
| zuG | Undo | Undo. |
| zv | Open enough folds to view the cursor line | Open enough folds to view the cursor line. |
| zw | Permanently mark word as incorrectly spelled | Permanently mark word as incorrectly spelled. |
| zx | Re-apply 'foldlevel' and do "zv" | Re-apply 'foldlevel' and do "zv". |
| zy | Yank without trailing spaces | Yank without trailing spaces. |
| zz | Redraw, cursor line at center of window | Redraw, cursor line at center of window. |
| Shortcut | Action | What it does |
|---|---|---|
| [ Ctrl + D | Jump to first #define found in current and included files matching the word under the cursor, start searching at beginning of current file | Jump to first #define found in current and included files matching the word under the cursor, start searching at beginning of current file. |
| [ Ctrl + I | Jump to first line in current and included files that contains the word under the cursor, start searching at beginning of current file | Jump to first line in current and included files that contains the word under the cursor, start searching at beginning of current file. |
| [# | 1 cursor to N previous unmatched #if, #else or #ifdef | 1 cursor to N previous unmatched #if, #else or #ifdef. |
| [' | 1 cursor to previous lowercase mark, on first non-blank | 1 cursor to previous lowercase mark, on first non-blank. |
| [( | 1 cursor N times back to unmatched '(' | 1 cursor N times back to unmatched '('. |
| [* | 1 same as "[/" | 1 same as "[/". |
| [` | 1 cursor to previous lowercase mark | 1 cursor to previous lowercase mark. |
| [/ | 1 cursor to N previous start of a C comment | 1 cursor to N previous start of a C comment. |
| [C | 1 jump to N previous multicursor | 1 jump to N previous multicursor. |
| [D | List all defines found in current and included files matching the word under the cursor, start searching at beginning of current file | List all defines found in current and included files matching the word under the cursor, start searching at beginning of current file. |
| [I | List all lines found in current and included files that contain the word under the cursor, start searching at beginning of current file | List all lines found in current and included files that contain the word under the cursor, start searching at beginning of current file. |
| [P | 2 same as "[p" | 2 same as "[p". |
| [[ | 1 cursor N sections backward | 1 cursor N sections backward. |
| [] | 1 cursor N SECTIONS backward | 1 cursor N SECTIONS backward. |
| [c | 1 cursor N times backwards to start of change | 1 cursor N times backwards to start of change. |
| [d | Show first #define found in current and included files matching the word under the cursor, start searching at beginning of current file | Show first #define found in current and included files matching the word under the cursor, start searching at beginning of current file. |
| [i | Show first line found in current and included files that contains the word under the cursor, start searching at beginning of current file | Show first line found in current and included files that contains the word under the cursor, start searching at beginning of current file. |
| [m | 1 cursor N times back to start of member function | 1 cursor N times back to start of member function. |
| [p | 2 like "P", but adjust indent to current line | 2 like "P", but adjust indent to current line. |
| [s | 1 move to the previous misspelled word | 1 move to the previous misspelled word. |
| [z | 1 move to start of open fold | 1 move to start of open fold. |
| [{ | 1 cursor N times back to unmatched '{' | 1 cursor N times back to unmatched '{'. |
| [<MiddleMouse> | 2 same as "[p" | 2 same as "[p". |
| ] Ctrl + D | Jump to first #define found in current and included files matching the word under the cursor, start searching at cursor position | Jump to first #define found in current and included files matching the word under the cursor, start searching at cursor position. |
| ] Ctrl + I | Jump to first line in current and included files that contains the word under the cursor, start searching at cursor position | Jump to first line in current and included files that contains the word under the cursor, start searching at cursor position. |
| ]# | 1 cursor to N next unmatched #endif or #else | 1 cursor to N next unmatched #endif or #else. |
| ]' | 1 cursor to next lowercase mark, on first non-blank | 1 cursor to next lowercase mark, on first non-blank. |
| ]) | 1 cursor N times forward to unmatched ')' | 1 cursor N times forward to unmatched ')'. |
| ]* | 1 same as "]/" | 1 same as "]/". |
| ]` | 1 cursor to next lowercase mark | 1 cursor to next lowercase mark. |
| ]/ | 1 cursor to N next end of a C comment | 1 cursor to N next end of a C comment. |
| ]C | 1 jump to N next multicursor | 1 jump to N next multicursor. |
| ]D | List all #defines found in current and included files matching the word under the cursor, start searching at cursor position | List all #defines found in current and included files matching the word under the cursor, start searching at cursor position. |
| ]I | List all lines found in current and included files that contain the word under the cursor, start searching at cursor position | List all lines found in current and included files that contain the word under the cursor, start searching at cursor position. |
| ]P | 2 same as "[p" | 2 same as "[p". |
| ][ | 1 cursor N SECTIONS forward | 1 cursor N SECTIONS forward. |
| ]] | 1 cursor N sections forward | 1 cursor N sections forward. |
| ]c | 1 cursor N times forward to start of change | 1 cursor N times forward to start of change. |
| ]d | Show first #define found in current and included files matching the word under the cursor, start searching at cursor position | Show first #define found in current and included files matching the word under the cursor, start searching at cursor position. |
| ]i | Show first line found in current and included files that contains the word under the cursor, start searching at cursor position | Show first line found in current and included files that contains the word under the cursor, start searching at cursor position. |
| ]m | 1 cursor N times forward to end of member function | 1 cursor N times forward to end of member function. |
| ]p | 2 like "p", but adjust indent to current line | 2 like "p", but adjust indent to current line. |
| ]s | 1 move to next misspelled word | 1 move to next misspelled word. |
| ]z | 1 move to end of open fold | 1 move to end of open fold. |
| ]} | 1 cursor N times forward to unmatched '}' | 1 cursor N times forward to unmatched '}'. |
| ]<MiddleMouse> | 2 same as "]p" | 2 same as "]p". |
| ["x]gP | 2 put the text [from register x] before the cursor N times, leave the cursor after it | 2 put the text [from register x] before the cursor N times, leave the cursor after it. |
| ["x]gp | 2 put the text [from register x] after the cursor N times, leave the cursor after it | 2 put the text [from register x] after the cursor N times, leave the cursor after it. |
| Shortcut | Action | What it does |
|---|---|---|
| v | Force operator to work charwise | Force operator to work charwise. |
| V | Force operator to work linewise | Force operator to work linewise. |
| Ctrl + V | Force operator to work blockwise | Force operator to work blockwise. |
| Shortcut | Action | What it does |
|---|---|---|
| Ctrl + \ Ctrl + N | Stop Visual mode | Stop Visual mode. |
| Ctrl + \ Ctrl + G | Go to Normal mode | Go to Normal mode. |
| Ctrl + A | 2 add N to number in highlighted text | 2 add N to number in highlighted text. |
| Ctrl + C | Stop Visual mode | Stop Visual mode. |
| Ctrl + G | Toggle between Visual mode and Select mode | Toggle between Visual mode and Select mode. |
| Backspace | 2 Select mode: delete highlighted area | 2 Select mode: delete highlighted area. |
| Ctrl + H | 2 same as <BS> | 2 same as <BS>. |
| Ctrl + O | Switch from Select to Visual mode for one command | Switch from Select to Visual mode for one command. |
| Ctrl + V | Make Visual mode blockwise or stop Visual mode | Make Visual mode blockwise or stop Visual mode. |
| Ctrl + X | 2 subtract N from number in highlighted text | 2 subtract N from number in highlighted text. |
| Esc | Stop Visual mode | Stop Visual mode. |
| Ctrl + ] | Jump to highlighted tag | Jump to highlighted tag. |
| !{filter} | 2 filter the highlighted lines through the external command {filter} | 2 filter the highlighted lines through the external command {filter}. |
| : | Start a command-line with the highlighted lines as a range | Start a command-line with the highlighted lines as a range. |
| < | 2 shift the highlighted lines one 'shiftwidth' left | 2 shift the highlighted lines one 'shiftwidth' left. |
| = | 2 filter the highlighted lines through the external program given with the 'equalprg' option | 2 filter the highlighted lines through the external program given with the 'equalprg' option. |
| > | 2 shift the highlighted lines one 'shiftwidth' right | 2 shift the highlighted lines one 'shiftwidth' right. |
| A | 2 block mode: append same text in all lines, after the highlighted area | 2 block mode: append same text in all lines, after the highlighted area. |
| C | 2 delete the highlighted lines and start insert | 2 delete the highlighted lines and start insert. |
| D | 2 delete the highlighted lines | 2 delete the highlighted lines. |
| I | 2 block mode: insert same text in all lines, before the highlighted area | 2 block mode: insert same text in all lines, before the highlighted area. |
| J | 2 join the highlighted lines | 2 join the highlighted lines. |
| K | Run 'keywordprg' on the highlighted area | Run 'keywordprg' on the highlighted area. |
| O | Move horizontally to other corner of area | Move horizontally to other corner of area. |
| P | Replace highlighted area with register contents; registers are unchanged | Replace highlighted area with register contents; registers are unchanged. |
| R | 2 delete the highlighted lines and start insert | 2 delete the highlighted lines and start insert. |
| S | 2 delete the highlighted lines and start insert | 2 delete the highlighted lines and start insert. |
| U | 2 make highlighted area uppercase | 2 make highlighted area uppercase. |
| V | Make Visual mode linewise or stop Visual mode | Make Visual mode linewise or stop Visual mode. |
| X | 2 delete the highlighted lines | 2 delete the highlighted lines. |
| Y | Yank the highlighted lines | Yank the highlighted lines. |
| a" | Extend highlighted area with a double quoted string | Extend highlighted area with a double quoted string. |
| a' | Extend highlighted area with a single quoted string | Extend highlighted area with a single quoted string. |
| a( | Same as ab | Same as ab. |
| a) | Same as ab | Same as ab. |
| a< | Extend highlighted area with a <> block | Extend highlighted area with a <> block. |
| a> | Same as a< | Same as a<. |
| aB | Extend highlighted area with a {} block | Extend highlighted area with a {} block. |
| aW | Extend highlighted area with "a WORD" | Extend highlighted area with "a WORD". |
| a[ | Extend highlighted area with a [] block | Extend highlighted area with a [] block. |
| a] | Same as a[ | Same as a[. |
| a` | Extend highlighted area with a backtick quoted string | Extend highlighted area with a backtick quoted string. |
| ab | Extend highlighted area with a () block | Extend highlighted area with a () block. |
| al | Extend highlighted area to all lines | Extend highlighted area to all lines. |
| ap | Extend highlighted area with a paragraph | Extend highlighted area with a paragraph. |
| as | Extend highlighted area with a sentence | Extend highlighted area with a sentence. |
| at | Extend highlighted area with a tag block | Extend highlighted area with a tag block. |
| aw | Extend highlighted area with "a word" | Extend highlighted area with "a word". |
| a{ | Same as aB | Same as aB. |
| a} | Same as aB | Same as aB. |
| c | 2 delete highlighted area and start insert | 2 delete highlighted area and start insert. |
| d | 2 delete highlighted area | 2 delete highlighted area. |
| g Ctrl + A | 2 add N to number in highlighted text | 2 add N to number in highlighted text. |
| g Ctrl + X | 2 subtract N from number in highlighted text | 2 subtract N from number in highlighted text. |
| gJ | 2 join the highlighted lines without inserting spaces | 2 join the highlighted lines without inserting spaces. |
| gq | 2 format the highlighted lines | 2 format the highlighted lines. |
| gv | Exchange current and previous highlighted area | Exchange current and previous highlighted area. |
| i" | Extend highlighted area with a double quoted string (without quotes) | Extend highlighted area with a double quoted string (without quotes). |
| i' | Extend highlighted area with a single quoted string (without quotes) | Extend highlighted area with a single quoted string (without quotes). |
| i( | Same as ib | Same as ib. |
| i) | Same as ib | Same as ib. |
| i< | Extend highlighted area with inner <> block | Extend highlighted area with inner <> block. |
| i> | Same as i< | Same as i<. |
| iB | Extend highlighted area with inner {} block | Extend highlighted area with inner {} block. |
| iW | Extend highlighted area with "inner WORD" | Extend highlighted area with "inner WORD". |
| i[ | Extend highlighted area with inner [] block | Extend highlighted area with inner [] block. |
| i] | Same as i[ | Same as i[. |
| i` | Extend highlighted area with a backtick quoted string (without the backticks) | Extend highlighted area with a backtick quoted string (without the backticks). |
| ib | Extend highlighted area with inner () block | Extend highlighted area with inner () block. |
| il | Select inner line under cursor | Select inner line under cursor. |
| ip | Extend highlighted area with inner paragraph | Extend highlighted area with inner paragraph. |
| is | Extend highlighted area with inner sentence | Extend highlighted area with inner sentence. |
| it | Extend highlighted area with inner tag block | Extend highlighted area with inner tag block. |
| iw | Extend highlighted area with "inner word" | Extend highlighted area with "inner word". |
| i{ | Same as iB | Same as iB. |
| i} | Same as iB | Same as iB. |
| o | Move cursor to other corner of area | Move cursor to other corner of area. |
| p | Replace highlighted area with register contents; deleted text in unnamed register | Replace highlighted area with register contents; deleted text in unnamed register. |
| r | 2 replace highlighted area with a character | 2 replace highlighted area with a character. |
| s | 2 delete highlighted area and start insert | 2 delete highlighted area and start insert. |
| u | 2 make highlighted area lowercase | 2 make highlighted area lowercase. |
| v | Make Visual mode charwise or stop Visual mode | Make Visual mode charwise or stop Visual mode. |
| x | 2 delete the highlighted area | 2 delete the highlighted area. |
| y | Yank the highlighted area | Yank the highlighted area. |
| ~ | 2 swap case for the highlighted area | 2 swap case for the highlighted area. |
| Shortcut | Action | What it does |
|---|---|---|
| Ctrl + A | Do completion on the pattern in front of the cursor and insert all matches | Do completion on the pattern in front of the cursor and insert all matches. |
| Ctrl + B | Cursor to begin of command-line | Cursor to begin of command-line. |
| Ctrl + C | Same as <Esc> | Same as <Esc>. |
| Ctrl + D | List completions that match the pattern in front of the cursor | List completions that match the pattern in front of the cursor. |
| Ctrl + G | Next match when 'incsearch' is active | Next match when 'incsearch' is active. |
| Backspace | Delete the character in front of the cursor enter digraph when 'digraph' is on | Delete the character in front of the cursor enter digraph when 'digraph' is on. |
| Ctrl + H | Same as <BS> | Same as <BS>. |
| Tab | If 'wildchar' is <Tab>: Do completion on the pattern in front of the cursor | If 'wildchar' is <Tab>: Do completion on the pattern in front of the cursor. |
| <S-Tab> | Same as CTRL-P | Same as CTRL-P. |
| 'wildchar' | Do completion on the pattern in front of the cursor (default: <Tab>) | Do completion on the pattern in front of the cursor (default: <Tab>). |
| Ctrl + I | Same as <Tab> | Same as <Tab>. |
| <NL> | Same as <CR> | Same as <CR>. |
| Ctrl + J | Same as <CR> enter digraph | Same as <CR> enter digraph. |
| Ctrl + L | Do completion on the pattern in front of the cursor and insert the longest common part | Do completion on the pattern in front of the cursor and insert the longest common part. |
| Enter | Execute entered command | Execute entered command. |
| Ctrl + M | Same as <CR> | Same as <CR>. |
| Ctrl + N | After using 'wildchar' with multiple matches: go to next match, otherwise: recall older command-line from history | After using 'wildchar' with multiple matches: go to next match, otherwise: recall older command-line from history. |
| Ctrl + P | After using 'wildchar' with multiple matches: go to previous match, otherwise: recall older command-line from history | After using 'wildchar' with multiple matches: go to previous match, otherwise: recall older command-line from history. |
| Ctrl + Q | Same as CTRL-V, unless it's used for terminal control flow | Same as CTRL-V, unless it's used for terminal control flow. |
| Ctrl + T | Previous match when 'incsearch' is active | Previous match when 'incsearch' is active. |
| Ctrl + U | Remove all characters between the cursor and beginning of command-line | Remove all characters between the cursor and beginning of command-line. |
| Ctrl + V | Insert next non-digit literally, insert three digit decimal number as a single byte | Insert next non-digit literally, insert three digit decimal number as a single byte. |
| Ctrl + W | Delete the word in front of the cursor | Delete the word in front of the cursor. |
| Esc | Abandon command-line without executing it | Abandon command-line without executing it. |
| Ctrl + [ | Same as <Esc> | Same as <Esc>. |
| Ctrl + \ Ctrl + N | Go to Normal mode, abandon command-line | Go to Normal mode, abandon command-line. |
| Ctrl + \ Ctrl + G | Go to Normal mode, abandon command-line {expr} | Go to Normal mode, abandon command-line {expr}. |
| Ctrl + ] | Trigger abbreviation | Trigger abbreviation. |
| Ctrl + ^ | Toggle use of mappings | Toggle use of mappings. |
| Delete | Delete the character under the cursor | Delete the character under the cursor. |
| Left | Cursor left | Cursor left. |
| <S-Left> | Cursor one word left | Cursor one word left. |
| <C-Left> | Cursor one word left | Cursor one word left. |
| Right | Cursor right | Cursor right. |
| <S-Right> | Cursor one word right | Cursor one word right. |
| <C-Right> | Cursor one word right | Cursor one word right. |
| Up | Recall previous command-line from history that matches pattern in front of the cursor | Recall previous command-line from history that matches pattern in front of the cursor. |
| <S-Up> | Recall previous command-line from history | Recall previous command-line from history. |
| Down | Recall next command-line from history that matches pattern in front of the cursor | Recall next command-line from history that matches pattern in front of the cursor. |
| <S-Down> | Recall next command-line from history | Recall next command-line from history. |
| Home | Cursor to start of command-line | Cursor to start of command-line. |
| End | Cursor to end of command-line | Cursor to end of command-line. |
| Page Down | Same as <S-Down> | Same as <S-Down>. |
| Page Up | Same as <S-Up> | Same as <S-Up>. |
| Insert | Toggle insert/overstrike mode | Toggle insert/overstrike mode. |
| <LeftMouse> | Cursor at mouse click | Cursor at mouse click. |
The most essential Neovim / Vim shortcuts are: i (Insert mode), Esc (Normal mode), v (Visual mode).
The Neovim / Vim shortcut for insert mode is i.
Print the Neovim / Vim cheat sheet and keep it next to your keyboard for the first week, then switch to active recall: open Shortcut Speedrun and practice Neovim / Vim shortcuts against the clock until they're automatic.
Yes — use My Stack to combine Neovim / Vim shortcuts with any other platform on this site into one printable reference, which is useful if your daily workflow spans several tools.
Neovim starts in Normal mode, where keys are commands. i enters Insert mode to type text, and Esc returns to Normal — when keys seem to do nothing, Esc first, then retry. v starts a Visual selection by character and V by line; in Visual mode the same edit keys (d, y, >) act on the selection. Command-line mode begins with : and is where files are saved and the editor is quit.
dd deletes the current line and yy yanks (copies) it; p puts the deleted or yanked text after the cursor. Because these are operators, a count multiplies them — 3dd deletes three lines — and motions combine with them (dw, d$). u undoes and Ctrl + R redoes, without limit.
/[pattern] searches forward from the cursor, with n and N for the next and previous match. :%s/old/new/g replaces every occurrence in the file — % is the whole file, g means all matches on each line, and adding c asks before each change. :w saves, :q quits and :wq does both.
Open your assistant with this page preloaded as the source — great for follow-up questions like "which of these work in other apps?"