vi command summary
The following tables contain all the basic vi commands.
Starting vi
------------------------------------------------------- Command Description ------------------------------------------------------- vi file start at line 1 of file vi +n file start at line n of file vi + file start at last line of file vi +/pattern file start at pattern in file vi -r file recover file after a system crash
Saving files and quitting vi
---------------------------------------------------
Command Description
---------------------------------------------------
:e file edit file (save current file with
:w first)
:w save (write out) the file being
edited
:w file save as file
:w! file save as an existing file
:q quit vi
:wq save the file and quit vi
:x save the file if it has changed and
quit vi
:q! quit vi without saving changes
Moving the cursor
---------------------------------------------------
Keys pressed Effect
---------------------------------------------------
h left one character
l or <Space> right one character
k up one line
j or <Enter> down one line
b left one word
w right one word
( start of sentence
) end of sentence
{ start of paragraph
} end of paragraph
1G top of file
nG line n
G end of file
<Ctrl>W first character of insertion
<Ctrl>U up ½ screen
<Ctrl>D down ½ screen
<Ctrl>B up one screen
<Ctrl>F down one screen
Inserting text
--------------------------------------------------- Keys pressed Text inserted --------------------------------------------------- a after the cursor A after last character on the line i before the cursor I before first character on the line o open line below current line O open line above current line
Changing and replacing text
-------------------------------------------------------- Keys pressed Text changed or replaced -------------------------------------------------------- cw word 3cw three words cc current line 5cc five lines r current character only R current character and those to its right s current character S current line ~ switch between lowercase and uppercase
Deleting text
---------------------------------------------------
Keys pressed Text deleted
---------------------------------------------------
x character under cursor
12x 12 characters
X character to left of cursor
dw word
3dw three words
d0 to beginning of line
d$ to end of line
dd current line
5dd five lines
d{ to beginning of paragraph
d} to end of paragraph
:1,. d to beginning of file
:.,$ d to end of file
:1,$ d whole file
Using markers and buffers
-----------------------------------------------------------
Command Description
-----------------------------------------------------------
mf set marker named ``f''
`f go to marker ``f''
´f go to start of line containing marker ``f''
"s12yy copy 12 lines into buffer ``s''
"ty} copy text from cursor to end of paragraph
into buffer ``t''
"ly1G copy text from cursor to top of file into
buffer ``l''
"kd`f cut text from cursor up to marker ``f''
into buffer ``k''
"kp paste buffer ``k'' into text
Searching for text
---------------------------------------------------
Search Finds
---------------------------------------------------
/and next occurrence of ``and'', for
example, ``and'', ``stand'',
``grand''
?and previous occurrence of ``and''
/^The next line that starts with ``The'',
for example, ``The'', ``Then'',
``There''
/^The\> next line that starts with the word
``The''
/end$ next line that ends with ``end''
/[bB]ox next occurrence of ``box'' or
``Box''
n repeat the most recent search, in
the same direction
N repeat the most recent search, in
the opposite direction
Searching for and replacing text
-------------------------------------------------------------
Command Description
-------------------------------------------------------------
:s/pear/peach/g replace all occurrences of ``pear''
with ``peach'' on current line
:/orange/s//lemon/g change all occurrences of
``orange'' into ``lemon'' on next
line containing ``orange''
:.,$/\<file/directory/g replace all words starting with
``file'' by ``directory'' on every
line from current line onward, for
example, ``filename'' becomes
``directoryname''
:g/one/s//1/g replace every occurrence of ``one''
with 1, for example, ``oneself''
becomes ``1self'', ``someone''
becomes ``some1''
Matching patterns of text
--------------------------------------------------------------------
Expression Matches
--------------------------------------------------------------------
. any single character
* zero or more of the previous expression
.* zero or more arbitrary characters
\< beginning of a word
\> end of a word
\ quote a special character
\* the character ``*''
^ beginning of a line
$ end of a line
[set] one character from a set of characters
[XYZ] one of the characters ``X'', ``Y'', or
``Z''
[[:upper:]][[:lower:]]* one uppercase character followed by any
number of lowercase characters
[^set] one character not from a set of characters
[^XYZ[:digit:]] any character except ``X'', ``Y'', ``Z'',
or a numeric digit
Options to the :set command
--------------------------------------------------------
Option Effect
--------------------------------------------------------
all list settings of all options
ignorecase ignore case in searches
list display <Tab> and end-of-line characters
mesg display messages sent to your terminal
nowrapscan prevent searches from wrapping round the
end or beginning of a file
number display line numbers
report=5 warn if five or more lines are changed
by command
term=ansi set terminal type to ``ansi''
terse shorten error messages
warn display ``[No write since last change]''
on shell escape if file has not been
saved