Created
September 3, 2019 21:19
-
-
Save zfwf/0f08787a9eceb1208a81c379ad07ba2c to your computer and use it in GitHub Desktop.
vim movements
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cursor movement | |
h - move left | |
j - move down | |
k - move up | |
l - move right | |
w - jump by start of words (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 - 5G goes to line 5) | |
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines. | |
Insert Mode - Inserting/Appending text | |
i - start insert mode at cursor | |
I - insert at the beginning of the line | |
a - append after the cursor | |
A - 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 | |
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 | |
Another good vim commands cheatsheet and a vi introduction using the "cheat sheet" method | |
e | |
Move to the end of a word. | |
w | |
Move forward to the beginning of a word. | |
3w | |
Move forward three words. | |
W | |
Move forward a WORD (any non-whitespace characters). | |
b | |
Move backward to the beginning of a word. | |
3b | |
Move backward three words. | |
$ | |
Move to the end of the line. | |
0 | |
Move to the beginning of the line. | |
^ | |
Move to the first non-blank character of the line. | |
) | |
Jump forward one sentence. | |
( | |
Jump backward one sentence. | |
} | |
Jump forward one paragraph. | |
{ | |
Jump backward one paragraph.: | |
j | |
Jump forward one line. | |
k | |
Jump backward one line. | |
H | |
Jump to the top of the screen. | |
M | |
Jump to the middle of the screen. | |
L | |
Jump to the bottom of the screen. | |
10<PageUp> or 10<CTRL-B> | |
Move 10 pages up. | |
5<PageDown> or 5<CTRL-F> | |
Move 5 pages down. | |
G | |
Jump to end of file. | |
1G | |
Jump to beginning of file (same as gg). | |
50G | |
Jump to line 50. | |
mx | |
Set mark x at the current cursor position. | |
'x | |
Jump to the beginning of the line of mark x. | |
`x | |
Jump to the cursor position of mark x. | |
'' | |
Return to the line where the cursor was before the latest jump. | |
(Two single quotes.) | |
`` | |
Return to the cursor position before the latest jump (undo the jump). | |
(Two back ticks. This is above the Tab key on some keyboards.) | |
'. | |
Jump to the last-changed line. | |
% | |
Jump to corresponding item, e.g. from an open brace to its matching closing brace. See Moving to matching braces for more. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment