Cursor movement
w | jump by start of words |
---|---|
W | jump by words (no punct.) |
e | jump to end of words |
E | jump to end of words (no punct.) |
b | jump backwards by words |
B | jump backwards by words (no punct.) |
0 | start of line |
^ | first non-blank character of line |
$ | end of line |
G | GoTo command (prefix like 5G) |
Note:
Prefix a cursor movement command with a number:
for example, 4j moves down 4 lines.
Insert Mode - Inserting/Appending text
i | start insert mode at cursor |
---|---|
I | insert at the beginning of line |
a | append after cursor |
A | append at the end of line |
o | open (append) blank line below current one |
O | open blank line above current one |
ea | append at the end of word |
Esc | exit insert mode |
Editing
r | replace a single character |
---|---|
J | join the line below to 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 substitute text |
S | delete line at cursor and substitute text |
xp | transpose two letters (delete+paste, technically) |
u | undo |
ctrl+r | redo |
. | repeat last command |
Marking text (visual mode)
v | start visual mode |
---|---|
V | start Linewise vidual 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 | mark () block (incl. braces) |
aB | mark {} block (incl. 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 quit |
---|---|
:wq | write (save) and quit |
:q | quit (fails is anything has changed) |
:q! | quit and throw away changes |
Search/Replace
/pattern | search for pattern |
---|---|
?pattern | search backwards for pattern |
n | repeat search in same direction |
N | repeast search in opposite direction |
:%s/old/new/g | replace all old with new throughout file |
%s/old/new/gc | ... with confirmations |
Working with multiple files
:e filename | edit a file in a new buffer |
---|---|
:bnext (or :bn) | go to next buffer |
:bprev (or :bp) | go to previous buffer |
:bd | delete a buffer (close a file) |
:sp filename | open a filename 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 |