This document provides a summary of commands and modes in the Vi text editor. It begins with an overview of Vi's two modes: command mode, where cursor movement and text deletion/pasting occur, and insertion mode, entered by commands like i or a to insert text. The document then summarizes key commands for yanking (copying), changing, inserting, deleting, searching, replacing, and quitting text. It also covers regular expressions, counts, ranges, markers, files, and other Vi features.
1. Vi Reference Card Yanking text Regular expressions
Like deletion, almost all yank commands are performed by any single character except newline . (dot)
typing y followed by a motion. For example y$ yanks to zero or more repeats *
Modes the end of line. Two other yank commands are: any character in set [...]
Vi has two modes: insertion mode, and command mode. any character not in set [^ ...]
The editor begins in command mode, where cursor move- line yy
beginning, end of line ^ , $
ment and text deletion and pasting occur. Insertion mode line :y
beginning, end of word < , >
begins upon entering an insertion or change command. grouping (. . . )
[ESC] returns the editor to command mode (where you can Changing text contents of n th grouping n
quit, for example by typing :q!). Most commands execute The change command is a deletion command that leaves
as soon as you type them except for “colon” commands the editor in insert mode. It is performed by typing c fol-
which execute when you press the return key. lowed by a motion. For example cw changes a word. A few
Counts
Nearly every command may be preceded by a number that
other change commands are:
specifies how many times it is to be performed. For exam-
Quitting to end of line C ple 5dw will delete 5 words and 3fe will move the cursor
exit, saving changes :x line cc forward to the 3rd occurance of the letter e. Even inser-
quit (unless changes) :q tions may be repeated conveniently with this method, say
quit (force, even if unsaved) :q! Putting text to insert the same line 100 times.
put after position or after line p
Inserting text put before position or before line P Ranges
insert before cursor, before line i , I Ranges may precede most “colon” commands and cause
append after cursor, after line a , A Registers them to be executed on a line or lines. For example :3,7d
open new line after, line before o , O Named registers may be specified before any deletion, would delete lines 3−7. Ranges are commonly combined
replace one char, many chars r , R change, yank, or put command. The general prefix has with the :s command to perform a replacement on several
the form "c where c may be any lower case letter. For lines, as with :.,$s/pattern/string/g to make a replace-
Motion example, "adw deletes a word into register a. It may there- ment from the current line to the end of the file.
left, down, up, right h , j , k , l after be put back into the text with an appropriate put
next word, blank delimited word w , W lines n-m :n ,m
command, for example "ap. current line :.
beginning of word, of blank delimited word b , B
end of word, of blank delimited word e , E last line :$
Markers marker c :’c
sentence back, forward ( , ) Named markers may be set on any line of a file. Any lower
paragraph back, forward { , } all lines :%
case letter may be a marker name. Markers may also be all matching lines :g/pattern /
beginning, end of line 0 , $ used as the limits for ranges.
beginning, end of file 1G , G
line n n G or :n set marker c on this line mc Files
forward, back to char c fc , Fc goto marker c ‘c write file (current file if no name given) :w file
forward, back to before char c tc , Tc goto marker c first non-blank ’c append file (current file if no name given) :w >>file
top, middle, bottom of screen H , M , L read file after line :r file
Search for strings read program output :r !program
Deleting text search forward /string next file :n
Almost all deletion commands are performed by typing d search backward ?string previous file :p
followed by a motion. For example dw deletes a word. A repeat search in same, reverse direction n , N edit new file :e file
few other deletions are: replace line with program output :.!program
character to right, left
Replace
x , X The search and replace function is accomplished with the Other
to end of line D :s command. It is commonly used in combination with toggle upper/lower case ~
line dd ranges or the :g command (below). join lines J
line :d repeat last text-changing command .
replace pattern with string :s/pattern /string /flags undo last change, all changes on line u , U
flags: all on each line, confirm each g , c
repeat last :s command &
c 2002 Donald J. Bindner – licensed under the terms of the GNU Free Documentation License version 1.1 or later.