This document provides a cheat sheet of common commands for the vi text editor, including commands for file management, window navigation, cursor movement, entering and exiting command mode, text insertion, deletion, copying, pasting, searching, replacing, and setting parameters. It also includes examples of using regular expressions for search strings and search/replace commands.
1 of 2
Downloaded 29 times
More Related Content
Vi cheat sheet
1. VI Cheat Sheet
ACNS Bulletin ED03
February 1995
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)
Window motions
<ctrl>d Scroll down (half a screen)
<ctrl>u Scroll up (half a screen)
<ctrl>f Page forward
<ctrl>b Page backward
/string Search forward
?string Search backward
<ctrl>l Redraw screen
<ctrl>g Display current line number and
file information
n Repeat search
N Repeat search reverse
G Go to last line
nG Go to line n
:n Go to line n
z<CR> Reposition window: cursor at top
z. Reposition window: cursor in middle
z- Reposition window: cursor at bottom
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 One word forward
b Back one word
fc Find c
; Repeat find (find next c)
Command mode versus input mode
Vi starts in command mode. The positioning commands
operate only while vi is in command mode. You switch vi
to input mode by entering any one of several vi input com-
mands. (See next section.) Once in input mode, any charac-
ter you type is taken to be text and is added to the file. You
cannot execute any commands until you exit input mode.
To exit input mode, press the escape (Esc) key.
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
Any of these commands leaves vi in input mode until you
press Esc. Pressing the RETURN key will not take you out
of input mode.
Change commands (Input mode)
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
s Substitute (Esc) - 1 char with string
S Substitute (Esc) - Rest of line with
text
. Repeat last change
Changes during insert mode
<ctrl>h Back one character
<ctrl>w Back one word
<ctrl>u Back to beginning of insert
vi Editor Cheat Sheet
Invoking vi: vi filename
Format of vi commands: [count][command] (count repeats the effect of the command)
2. Deletion commands
dd or ndd Delete n lines to general buffer
dw Delete word to general buffer
dnw 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
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
Parameters
:set list Show invisible characters
:set nolist Dont show invisible characters
:set number Show line numbers
:set nonumber Dont show line numbers
:set autoindent Indent after carriage return
:set noautoindent Turn off autoindent
:set showmatch Show matching sets of
parentheses as they are typed
:set noshowmatch Turn off showmatch
:set showmode Display mode on last line of screen
:set noshowmode Turn off showmode
:set all Show values of all possible
parameters
Move text from file old to file new
vi old
a10yy yank 10 lines to buffer a
:w write work buffer
:e new edit new file
ap put text from a after cursor
:30,60w new Write lines 30 to 60 in file new
Regular expressions (search strings)
^ Matches beginning of line
$ Matches end of line
. Matches any single character
* Matches any previous character
.* Matches any character
Search and replace commands
Syntax:
:[address]s/old_text/new_text/
Address components:
. Current line
n Line number n
.+m Current line plus m lines
$ Last line
/string/ A line that contains "string"
% Entire file
[addr1],[addr2] Specifies a range
Examples:
The following example replaces only the first occur-
rence of Banana with Kumquat in each of 11 lines
starting with the current line (.) and continuing for the
10 that follow (.+10).
:.,.+10s/Banana/Kumquat
The following example replaces every occurrence
(caused by the g at the end of the command) of
apple with pear.
:%s/apple/pear/g
The following example removes the last character from
every line in the file. Use it if every line in the file ends
with ^M as the result of a file transfer. Execute it
when the cursor is on the first line of the file.
:%s/.$//