Vim - Cheat Sheet
We know that learning all Vim'ss keybinds takes time, so here is a small Cheat Sheet that may help you in this journey of learning Vim.
Commands
| Command |
Description |
| :q |
Quit, fails if unsaved |
| :q! |
Quit, even if unsaved |
| :w |
Write (Save) |
| :wq |
Write (Save) and quit |
Movement
| Command |
Description |
| $ |
Jump to the end of line |
| ^ |
Jump to the start of the line (First non-blank character |
| h |
Move left |
| j |
Move down |
| k |
Move up |
| l |
Move right |
| H |
Move to the top of screen |
| M |
Move to the middle of screen |
| L |
Move to the bottom of screen |
| gg |
Move to the start of file |
| G |
Move to the end of file |
| 20G |
Move to line 20 |
| w |
Jump to the start of the next word |
| b |
Jump to the start of the previous word |
Modes
| Key |
Description |
| ESQ |
Return to Normal mode |
| i |
Insert at cursor position |
| a |
Insert after cursor position |
| o |
Insert on the line below cursor position |
| v |
Enter Visual mode |
| Ctr-v |
Enter Visual mode (block) |
| V |
Enter Visual Line mode |
Undo/Redo
| Key |
Description |
| u |
Undo |
| Ctr-r |
Redo |
Search/Replace
| Key |
Description |
| /{string} |
Search for string |
| n |
Jump to next match |
| N |
Jump to previous match |
| ~ |
switch case |
| /{string} |
c |
| ?pattern |
search backward for pattern |
| :%s/old/new/g |
replace all old with new throughout file |
| :%s/old/new/gc |
replace all old with new throughout file with confirmations |
Copy and Pasting
| Key |
Description |
| y [in Visual Mode] |
Copy highlighted text |
| yy |
Copy current line |
| d [in Visual Mode] |
Cut highlighted text |
| dd |
Cut current line |
| Ctr-Shift-V |
Paste from external clipboard |
| P |
Paste before the cursor |
| p |
Paste after the cursor |
Split Screen (Working with multiple files)
| Key |
Description |
| :vs {file name} |
vertical split, if there is no file name, vim will split the current screen |
| :sp {file name} |
horizontal split, if there is no file name, vim will split the current screen |
| :e filename |
Edit a file in a new buffer |
| :bn |
go to next buffer |
| :bp |
go to the previous buffer |
| :bd |
delete a buffer |
| ctrl+w h |
Move to the left window from current window |
| ctrl+w j |
Move to the bottom window from current window |
| ctrl+w k |
Move to the top window from current window |
| ctrl+w l |
Move to the right window from current window |
| ctrl+w r |
Swap bottom/top if split horizontally |
| ctrl+w R |
Swap top/bottom if split horizontally |
| ctrl+w r |
Rotates the windows from left to right - only if the windows are split vertically |
| ctrl+w R |
Rotates the windows from right to left - only if the windows are split vertically |
| ctrl+ws |
Split windows |
| ctrl+ww |
switch between windows |
| ctrl+wq |
Quit a window |
| ctrl+wv |
Split windows vertically |
Modifiers
| Modifiers |
Description |
| ci{ |
change the contents inside the current pair of curly brackets |
| ci[ |
change the contents inside the current pair of square brackets |
| ca( |
change a single-quoted string, including the surrounding curve brackets |
| da' |
delete a single-quoted string, including the surrounding single quotes |
Increment/Decrement
| Key |
Description |
| ctrl+a |
increments the number |
| ctrl+x |
decrements the number |
Note: An octal number starts with 0, and a hex number starts with 0x or 0X.
Marking text (visual mode)
| Marking |
Descritpion |
| o |
move to another end of marked area |
| O |
move to another corner of block |
| aw |
mark a word |
| ab |
a () block (with braces) |
| aB |
a {} block (with brackets) |
| ib |
inner () block |
| iB |
inner {} block |
Edit this page