Skip to main content

Unix Guide - vi Commands

Window motions

<CTRL>d -- Scroll down (half a screen)
<CTRL> -- Scroll up (half a screen)
<CTRL>f -- Page forward
<CTRL>b -- Page backward
/string -- Search forward
?string -- Search backward
n -- Repeat search
N -- Repeat search reverse
G -- Go to last line
nG -- Go to line n :n -- Go to line n
<CTRL>l -- Redraw screen
<CTRL>g -- File information

Cursor motions

H -- Upper left corner (home)
M -- Middle line
L -- Lower left corner
h -- Back a character
j -- Down a line
k -- Up a line
^ -- Beginning of line
$ -- End of line
l -- Forward a character
w -- Forward one word
b -- Back one word
fc -- Find c
; -- Repeat find (find next c)

Input commands (end with ESC)

a -- Append after cursor
i -- Insert before cursor
o -- Open line below
O -- Open line above
:r file -- Insert file after current line

Changes during insert mode

<CTRL>h -- Back one character
<CTRL>w -- Back one word
<CRTL>u -- Back to beginning of insert

Move text from file old to file new

vi old "a10yy -- Yank 10 lines to buffer a
:w -- Write work buffer
:enew -- Edit new file
"ap -- Put text from a after cursor

Deletion commands

dd -- Delete line
ndd -- Delete n lines to general buffer
dw -- Delete word to general buffer
ndw -- Delete n words
d) -- Delete to end of sentence
db -- Delete previous word
D -- Delete to end of line
x -- Delete character

Recovering deletions

p -- Put general buffer after cursor
P -- Put general buffer before cursor
Change commands
s -- Substitute (ESC) - 1 char with string
cw -- Change word (ESC)
cc -- Change line (ESC) - blanks line
c$ -- Change to end of line
rc -- Replace character with c
R -- Replace (ESC) - typeover
. -- Repeat last change

Undo commands

u -- Undo last change
U -- Undo all changes on line

Rearrangement commands

yy or Y -- Yank (copy) line to general buffer
"z6yy -- Yank 6 lines to buffer z
yw -- Yank word to general buffer
"a9dd -- Delete 9 lines to buffer a
"A9dd -- Delete 9 lines; append to buffer a
"ap -- Put text from buffer a after cursor
p -- Put general buffer after cursor
P -- Put general buffer before cursor
J -- Join lines

File management commands

:w name -- Write edit buffer to file name
:wq -- Write to file and quit
:q! -- Quit without saving changes
ZZ -- Same as :wq
:sh -- Execute shell commands (<CTRL>d)


:set list -- Show invisible characters
:set nolist -- Don't show invisible characters
:set number -- Show line numbers
:set nonumber -- Don't show line numbers