Vim keyboard sortcuts
Cursor movement
h move left
j or Ctrl+J move down
k or Ctrl+P move up
l move one right
jump by start of words move forward one word (next alphanumeric word)
w
(punctuation considered words)
W jump by words (spaces separate words)
e jump to end of words (punctuation considered words)
E jump to end of words (no punctuation)
b jump backward by words (punctuation considered words)
B jump backward by words (no punctuation)
0 (zero) start of line
^ first non-blank character of line
$ end of line
G Go To command (prefix with number)
Prefix a cursor movement command with a number to repeat it. For example, 4j moves
Note:
down 4 lines.
Insert ModeInserting/Appending text
i start insert mode at cursor (insert before the cursor)
I insert at the beginning of the line
a insert (append) after the cursor
A insert (append) at the end of the line
o open (append) blank line below current line (no need to press return)
O open blank line above current line
ea append at end of word
Esc exit insert mode
Navigate around the document
( jumps to the previous sentence
) jumps to the next sentence
{ jumps to the previous paragraph
} jumps to the next paragraph
[[ jumps to the previous section
]] jumps to the next section
[] jump to the end of the previous section
][ jump to the end of the next section
Editing
r replace a single character (does not use insert mode)
J join line below to the current one
cc change (replace) an entire line
cw change (replace) to the end of word
c$ change (replace) to the end of line
s delete character at cursor and subsitute text
S delete line at cursor and substitute text (same as cc)
xp transpose two letters (delete and paste, technically)
u undo
. repeat last command
Marking text (visual mode)
v start visual mode, mark lines, then do command (such as y-yank)
V start Linewise visual mode
o move to other end of marked area
Ctrl+v start visual block mode
O move to Other corner of block
aw mark a word
ab a () block (with braces)
aB a {} block (with brackets)
ib inner () block
iB inner {} block
Esc exit visual mode
Visual commands
> shift right
< shift left
y yank (copy) marked text
d delete marked text
~ switch case
Cut and Paste
yy yank (copy) a line
2yy yank 2 lines
yw yank word
y$ yank to end of line
p put (paste) the clipboard after cursor
P put (paste) before cursor
dd delete (cut) a line
dw delete (cut) the current word
x delete (cut) current character
Exiting
:w write (save) the file, but don't exit
:wq write (save) and quit
:q quit (fails if anything has changed)
:q! quit and throw away changes
Search/Replace
/pattern search for pattern
?pattern search backward for pattern
n repeat search in same direction
N repeat search in opposite direction
:%s/old/new/g replace all old with new throughout file
:%s/old/new/gc replace all old with new throughout file with confirmations
Working with multiple files
:e filename Edit a file in a new buffer
:bnext (or :bn) go to next buffer
:bprev (of :bp) go to previous buffer
:bd delete a buffer (close a file)
:sp filename Open a file in a new buffer and split window
ctrl+ws Split windows
ctrl+ww switch between windows
ctrl+wq Quit a window
ctrl+wv Split windows vertically