Vim Dictionary

Complete reference for Vim motions and commands. Organized by category with thoughtful typography and visual hierarchy.

In Vim Gym Modules

44 motions

These motions are covered in our interactive exercises

Movement

15
h
Move left
Movement
j
Move down
Movement
k
Move up
Movement
l
Move right
Movement
w
Move to start of next word
Movement
e
Move to end of current word
Movement
b
Move to start of previous word
Movement
0
Move to beginning of line
Movement
_
Move to first non-blank character
Movement
$
Move to end of line
Movement
f
Find next occurrence of character
Movement
F
Find previous occurrence of character
Movement
;
Repeat last find command
Movement
{n}j
Jump down n lines
Movement
{n}k
Jump up n lines
Movement

Editing

14
o
Create new line below and enter insert mode
Editing
O
Create new line above and enter insert mode
Editing
s
Delete character and substitute text
Editing
x
Delete character under cursor
Editing
r
Replace single character
Editing
dd
Delete entire line
Editing
D
Delete to end of line
Editing
yy
Yank (copy) current line
Editing
p
Put (paste) after cursor
Editing
P
Put (paste) before cursor
Editing
:s/old/new/
Replace first occurrence on current line
Editing
:s/old/new/g
Replace all occurrences on current line
Editing
:%s/old/new/g
Replace all occurrences in file
Editing
:%s/old/new/gc
Replace with confirmation
Editing

Mode

7
Esc
Normal mode (navigate)
Mode
i
Insert mode (type)
Mode
a
Enter insert mode after cursor
Mode
I
Move to beginning of line and enter insert mode
Mode
A
Move to end of line and enter insert mode
Mode
v
Character-wise visual mode
Mode
V
Line-wise visual mode
Mode

Search

4
/
Search forward
Search
?
Search backward
Search
n
Next search result
Search
N
Previous search result
Search

Advanced

4
qa
Start recording macro in register a
Advanced
q
Stop recording macro
Advanced
@a
Replay macro from register a
Advanced
@@
Replay last executed macro
Advanced
Additional Commands

Other Common Vim Motions

246 motions

Additional Vim motions and commands commonly used by experienced users

Editing

84
dw
Delete word
Editing
d$
Delete to end of line
Editing
d0
Delete to beginning of line
Editing
dG
Delete to end of file
Editing
dgg
Delete to beginning of file
Editing
diw
Delete inner word
Editing
daw
Delete a word (including surrounding spaces)
Editing
di"
Delete inside quotes
Editing
da"
Delete around quotes
Editing
di(
Delete inside parentheses
Editing
da(
Delete around parentheses
Editing
X
Delete character before cursor
Editing
yw
Yank word
Editing
y$
Yank to end of line
Editing
y0
Yank to beginning of line
Editing
yG
Yank to end of file
Editing
ygg
Yank to beginning of file
Editing
yi"
Yank inside quotes
Editing
ya"
Yank around quotes
Editing
yi(
Yank inside parentheses
Editing
ya(
Yank around parentheses
Editing
~
Toggle case of selection
Editing
u
Make selection lowercase
Editing
U
Make selection uppercase
Editing
>
Indent selection right
Editing
<
Indent selection left
Editing
:s//
Repeat last substitution
Editing
u
Undo last change
Editing
Ctrl+r
Redo
Editing
U
Undo all changes on current line
Editing
guu
Make line lowercase
Editing
gUU
Make line uppercase
Editing
guw
Make word lowercase
Editing
gUw
Make word uppercase
Editing
g~
Toggle case of motion
Editing
J
Join current line with next line
Editing
gJ
Join lines without space
Editing
gq
Format lines to textwidth
Editing
gw
Format and restore cursor position
Editing
gr
Replace single character without entering insert mode
Editing
Ctrl+w
Delete word before cursor (insert mode)
Editing
Ctrl+u
Delete to start of line (insert mode)
Editing
Ctrl+h
Delete character before cursor (insert mode)
Editing
Ctrl+t
Indent line right (insert mode)
Editing
Ctrl+d
Indent line left (insert mode)
Editing
Ctrl+a
Insert previously inserted text (insert mode)
Editing
Ctrl+@
Insert previously inserted text and stop insert (insert mode)
Editing
Ctrl+v
Insert next character literally (insert mode)
Editing
:w
Write (save) file
Editing
:w!
Force write file
Editing
:q
Quit
Editing
:q!
Quit without saving
Editing
:wq
Write and quit
Editing
:x
Write and quit (only if modified)
Editing
:e {file}
Edit file
Editing
:e!
Reload file from disk
Editing
:saveas {file}
Save file with new name
Editing
das
Delete a sentence
Editing
dap
Delete a paragraph
Editing
db
Delete to beginning of word
Editing
de
Delete to end of word
Editing
d^
Delete to first non-blank character
Editing
dj
Delete current and next line
Editing
dk
Delete current and previous line
Editing
d{j}
Delete to beginning of paragraph
Editing
d{
Delete to beginning of paragraph
Editing
d}
Delete to end of paragraph
Editing
yas
Yank a sentence
Editing
yap
Yank a paragraph
Editing
yb
Yank to beginning of word
Editing
ye
Yank to end of word
Editing
y^
Yank to first non-blank character
Editing
y{
Yank to beginning of paragraph
Editing
y}
Yank to end of paragraph
Editing
yG
Yank to end of file
Editing
~
Toggle case of character under cursor
Editing
g~{motion}
Toggle case of motion
Editing
gU{motion}
Make motion uppercase
Editing
gu{motion}
Make motion lowercase
Editing
.
Repeat last change
Editing
g.
Repeat last change with count adjusted
Editing
x
Delete selection (visual mode)
Editing
s
Substitute selection (visual mode)
Editing
=
Indent selection automatically (visual mode)
Editing

Advanced

78
m{a-z}
Set mark at current position
Advanced
`{a-z}
Jump to mark
Advanced
'{a-z}
Jump to line of mark
Advanced
``
Jump to position before last jump
Advanced
''
Jump to line before last jump
Advanced
m{A-Z}
Set file mark (works across files)
Advanced
"{a-z}y
Yank to named register
Advanced
"{a-z}p
Put from named register
Advanced
"0p
Put from yank register
Advanced
"+y
Yank to system clipboard
Advanced
"+p
Put from system clipboard
Advanced
iw
Inner word text object
Advanced
aw
A word text object
Advanced
iW
Inner WORD text object
Advanced
aW
A WORD text object
Advanced
is
Inner sentence text object
Advanced
as
A sentence text object
Advanced
ip
Inner paragraph text object
Advanced
ap
A paragraph text object
Advanced
it
Inner tag text object
Advanced
at
A tag text object
Advanced
Ctrl+w s
Split window horizontally
Advanced
Ctrl+w v
Split window vertically
Advanced
Ctrl+w w
Switch between windows
Advanced
Ctrl+w q
Close current window
Advanced
Ctrl+w h/j/k/l
Navigate to window direction
Advanced
:tabnew
Open new tab
Advanced
gt
Go to next tab
Advanced
gT
Go to previous tab
Advanced
{n}gt
Go to tab number n
Advanced
Ctrl+r {reg}
Insert contents of register (insert mode)
Advanced
Ctrl+x Ctrl+f
File name completion (insert mode)
Advanced
Ctrl+x Ctrl+l
Line completion (insert mode)
Advanced
:bn
Next buffer
Advanced
:bp
Previous buffer
Advanced
:bd
Delete (close) buffer
Advanced
:b {n}
Go to buffer number n
Advanced
:b#
Switch to previous buffer
Advanced
:buffers
List all buffers
Advanced
:ls
List all buffers (short form)
Advanced
:ball
Open all buffers in windows
Advanced
:split
Split window horizontally
Advanced
:sp
Split window horizontally (short)
Advanced
:vsplit
Split window vertically
Advanced
:vs
Split window vertically (short)
Advanced
:split {file}
Split and edit file
Advanced
:close
Close current window
Advanced
:only
Close all windows except current
Advanced
:resize {n}
Resize window to n lines
Advanced
:vertical resize {n}
Resize window to n columns
Advanced
:g/{pat}/
Execute command on lines matching pattern
Advanced
:v/{pat}/
Execute command on lines not matching pattern
Advanced
:marks
List all marks
Advanced
:jumps
List jump history
Advanced
:changes
List change history
Advanced
:reg
List all registers
Advanced
:registers
List all registers (long form)
Advanced
:set {option}
Set option
Advanced
:set number
Show line numbers
Advanced
:set nonumber
Hide line numbers
Advanced
:set relativenumber
Show relative line numbers
Advanced
:set wrap
Enable line wrapping
Advanced
:set nowrap
Disable line wrapping
Advanced
ib
Inner bracket/parentheses text object
Advanced
ab
A bracket/parentheses text object
Advanced
i[
Inner square bracket text object
Advanced
a[
A square bracket text object
Advanced
i]
Inner square bracket text object
Advanced
a]
A square bracket text object
Advanced
i{
Inner curly brace text object
Advanced
a{
A curly brace text object
Advanced
i}
Inner curly brace text object
Advanced
a}
A curly brace text object
Advanced
i<
Inner angle bracket text object
Advanced
a<
A angle bracket text object
Advanced
i>
Inner angle bracket text object
Advanced
a>
A angle bracket text object
Advanced
:history
Show command-line history
Advanced

Movement

42
W
Move to start of next WORD (ignore punctuation)
Movement
E
Move to end of WORD
Movement
B
Move to start of previous WORD
Movement
ge
Move to end of previous word
Movement
gE
Move to end of previous WORD
Movement
g0
Move to first character in line (not first non-blank)
Movement
g^
Move to first non-blank character
Movement
g$
Move to last character in line
Movement
gm
Move to middle of line
Movement
H
Move to top of screen (first line)
Movement
M
Move to middle of screen
Movement
L
Move to bottom of screen (last line)
Movement
zt
Scroll line to top of screen
Movement
zz
Center line on screen
Movement
zb
Scroll line to bottom of screen
Movement
{
Move to previous paragraph
Movement
}
Move to next paragraph
Movement
(
Move to previous sentence
Movement
)
Move to next sentence
Movement
t{char}
Move cursor before next occurrence of character
Movement
T{char}
Move cursor after previous occurrence of character
Movement
,
Repeat last f, F, t, or T in opposite direction
Movement
G
Jump to end of file
Movement
gg
Jump to beginning of file
Movement
{n}G
Jump to line number n
Movement
Ctrl+o
Jump to older position in jump list
Movement
Ctrl+i
Jump to newer position in jump list
Movement
Ctrl+u
Move half screen up
Movement
Ctrl+d
Move half screen down
Movement
Ctrl+b
Move one screen up
Movement
Ctrl+f
Move one screen down
Movement
Ctrl+e
Scroll window down
Movement
Ctrl+y
Scroll window up
Movement
:n
Go to line n
Movement
:{n}
Go to line n (short form)
Movement
:$
Go to last line
Movement
%
Match corresponding bracket/parenthesis/brace
Movement
g%
Match corresponding item (more flexible)
Movement
[[
Move to previous section
Movement
]]
Move to next section
Movement
[]
Move to end of previous section
Movement
][
Move to end of next section
Movement

Mode

24
S
Delete entire line and enter insert mode
Mode
cc
Delete entire line and enter insert mode
Mode
cw
Delete to end of word and enter insert mode
Mode
c$
Delete to end of line and enter insert mode
Mode
ciw
Change inner word (delete word and enter insert)
Mode
ci"
Change inside quotes
Mode
ci(
Change inside parentheses
Mode
ci[
Change inside square brackets
Mode
ci{
Change inside curly braces
Mode
ca"
Change around quotes (including quotes)
Mode
Ctrl+v
Block visual mode
Mode
gv
Reselect last visual selection
Mode
R
Enter replace mode (overwrite characters)
Mode
gR
Enter virtual replace mode (handles tabs as spaces)
Mode
caw
Change a word (including surrounding spaces)
Mode
cas
Change a sentence
Mode
cap
Change a paragraph
Mode
ciB
Change inside { } block
Mode
caB
Change around { } block
Mode
ci}
Change inside } block
Mode
ca}
Change around } block
Mode
I
Insert at beginning of selection (visual block)
Mode
A
Append at end of selection (visual block)
Mode
c
Change selection (visual mode)
Mode

Search

18
*
Search for word under cursor forward
Search
#
Search for word under cursor backward
Search
g*
Search for partial word under cursor forward
Search
g#
Search for partial word under cursor backward
Search
Ctrl+n
Next match in completion (insert mode)
Search
Ctrl+p
Previous match in completion (insert mode)
Search
:%
Go to line matching pattern
Search
:grep {pattern}
Search using external grep
Search
:vimgrep {pattern} {files}
Search in files
Search
:cn
Next match from :grep
Search
:cp
Previous match from :grep
Search
:set hlsearch
Highlight search results
Search
:set nohlsearch
Disable search highlighting
Search
:nohlsearch
Temporarily disable search highlighting
Search
:set ignorecase
Ignore case in searches
Search
:set smartcase
Smart case in searches
Search
/{pattern}/e
Move cursor to end of match
Search
/{pattern}/b{offset}
Move cursor {offset} characters before match
Search