abbrev | ab [string text] Define string when typed to be translated into text.
If string and text are not specified, list all current
abbreviations.
Examples
Note: ^M appears when you type Ctrl-V followed by Return.
:ab ora O'Reilly & Associates, Inc.
:ab id Name:^MRank:^MPhone:
|
append | [address] a[!] text . Append text at specified address, or at present address if
none is specified. Add a ! to switch the
autoindent
setting that will be used during input (e.g., if autoindent
was enabled, ! disables it).
Terminate input by entering a line consisting of just a period.
|
args | ar Print filename arguments (the list of files to edit).
The current argument is shown in brackets ([]).
|
cd | cd dir chdir dir Change current directory within the editor to dir.
|
change | [address] c[!] text . Replace the specified lines with text. Add a ! to switch
the autoindent setting during input of text.
Terminate input by entering a line consisting of just a period.
|
copy | [address] co destination Copy the lines included in address to the specified
destination address.
The command t is the same as copy.
Example
:1,10 co 50 Copy first 10 lines to just after line 50
|
delete | [address] d [buffer] Delete the lines included in address.
If buffer is specified, save or append the text to the named
buffer.
Examples
:/Part I/,/Part II/-1d Delete to line above "Part II"
:/main/+d Delete line below "main"
:.,$d Delete from this line to last line
|
edit | e[!] [+n] [file] Begin editing file. Add a ! to discard any changes to the current file.
If no file is given, edit another copy of the
current file. With the +n argument, begin editing
on linen.
Examples
:e file
:e# Return to editing the previous file
:e! Discard edits since last save
|
exusage | exu [command] Print a brief usage message describing command,
or a list of available commands if command is
omitted.
|
file | f [filename] Change the name of the current file to filename,
which is considered "not edited." If no filename
is specified, print the current status of the file.
Example
:f %.new
|
global | [address] g[!]/pattern<//[commands] Execute commands on all lines that contain
pattern or, if address is
specified, on all lines within that range. If
commands are not specified, print all such lines.
If ! is used, execute
commands on all lines that don't contain
pattern. See v.
Examples
:g/Unix/p Print all lines containing "Unix"
:g/Name:/s/tom/Tom/ Change "tom" to "Tom" on all lines
containing "Name:"
|
help | h
Print a brief help message. Information on particular commands
can be obtained through the exusage
and viusage commands.
|
insert | address i[!] text . Insert text at line before the specified
address, or at present address if none is
specified. Add a ! to switch the
autoindent setting during input of
text. Terminate input by entering a line
consisting of just a period.
|
join | [address] j[!] [count] Place the text in the specified address on one
line, with
whitespace
adjusted to provide two blank characters after a
period (.), no blank characters after a ), and one
blank character otherwise. Add a !
to prevent whitespace adjustment.
Example
:1,5j! Join first five lines, preserving whitespace
|
k | [address] k char Mark the given address with
char. Return later to the line with 'char.
|
list | [address] l [count] Print the specified lines so that tabs display as ^I, and the ends of lines display as
$. l
is a temporary version of :set list.
|
map | map[!] [char commands] Define a keyboard macro named char as the
specified sequence of
commands. char is usually a
single character, or the sequence #n, representing a
function key on the keyboard. Use a ! to create a macro for input mode. With no
arguments, list the currently defined macros.
Examples
:map K dwwP Transpose two words
:map q :w^M:n^M Write current file; go to next
:map! + ^[bi(^[ea) Enclose previous word in parentheses
|
mark | [address] ma char Mark the specified line with char, a single
lowercase letter. Return later to the line with 'char. Same
as k.
|
mkexrc | mk[!] file Create an .exrc file containing a set command for every ex option, set to defaults.
|
move | [address] m destination Move the lines specified by address to the destination address.
Example
:.,/Note/m /END/ Move text block after line containing "END"
|
next | n[!] [[+command] filelist] Edit the next file from the command-line argument list. Use args to list these files. If
filelist is provided, replace the current
argument list with filelist and begin editing on
the first file; if command is given (containing
no spaces), execute command after editing the
first such file. Add a ! to discard
any changes to the current file.
Example
:n chap* Start editing all "chapter" files
|
number | [address] nu [count] Print each line specified by address, preceded by
its buffer line number. Use # as an
alternate abbreviation for number.
count specifies the number of lines to show,
starting with address.
|
open | [address] o [/pattern/]
Enter vi's open mode at the lines
specified by address or at the lines matching
pattern. Enter and exit open mode with Q. Open mode lets you use the regular
vi commands, but only one line at a
time. May be useful on slow dial-up lines.
|
preserve | pre Save the current editor buffer as though the system had crashed.
|
previous | prev[!] Edit the previous file from the command-line argument list.
|
print | [address] p [count] [address] P [count] Print the lines specified by address.
count specifies the number of lines to print,
starting with address. Add a ! to discard any changes to the current file.
Example
:100;+5p Show line 100 and the next 5 lines
|
put | [address] pu [char] Restore the lines that were previously deleted or yanked from named
buffer char, and put them after the line
specified by address. If
char is not specified, restore the last deleted
or yanked text.
|
quit | q[!] Terminate current editing session. Use ! to discard changes made since the last
save. If the editing session includes additional files in the argument
list that were never accessed, quit by typing q! or by typing q twice.
|
read | [address] r file Copy in the text from file on the line below the
specified address. If file
is not specified, the current filename is used.
Example
:0r $HOME/data Read file in at top of current file
|
read | [address] r !command Read the output of Linux command into the
text after the line specified by address.
Example
:$r !cal Place a calendar at end-of-file
|
recover | rec [file] Recover file from system save area.
|
rewind | rew[!] Rewind argument list and begin editing the first file in the list.
The ! flag rewinds, discarding any
changes to the current file that haven't been saved.
|
script | sc[!] [file] Create a new shell in a buffer that can be saved, optionally
specifying file where the buffer can be
saved. Can be used only in vi.
|
set | se parameter1 parameter2 ... Set a value to an option with each
parameter, or if no parameter is
supplied, print all options that have been changed from
their defaults. For Boolean-valued options, each
parameter can be phrased as option or nooption;
other options can be assigned with the syntax option=value.
Specify all to list current settings.
Examples
:set nows wm=10
:set all
|
shell | sh Create a new shell. Resume editing when the shell is terminated.
|
source | so file
Read and execute ex commands from file.
Example
:so $HOME/.exrc
|
stop | st Suspend the editing session. Same as Ctrl-Z.
Use fg to resume session.
|
substitute | [address] s [/pattern/replacement/] [options] [count] Replace each instance of pattern on the specified
lines with replacement.
If pattern and replacement are
omitted, repeat last substitution.
count specifies the number of lines on which to
substitute, starting with address. When preceded
by the global (g) or v
command, this command can be specified with a blank
pattern, in which case the pattern from the g or v command
is then used. For more examples,
see Section 9.4.1, "Examples of Searching and Replacing" in Chapter 9, "Pattern Matching".
Options
- c
Prompt for confirmation before each change.
- g
Substitute all instances of pattern on each line.
- p
Print the last line on which a substitution was made.
Examples
:1,10s/yes/no/g Substitute on first 10 lines
:%s/[Hh]ello/Hi/gc Confirm global substitutions
:s/Fortran/\U&/ 3 Uppercase first instance of "Fortran"
on next three lines
:g/^[0-9][0-9]*/s//Line &:/ For every line beginning
with one or more digits,
add the "Line" and a colon
|
suspend | su Suspend the editing session. Same as Ctrl-Z.
Use fg to resume session.
|
t | [address] t destination
Copy the lines included in address to the
specified destination address. t is an alias for copy.
Example
:%t$ Copy the file and add it to the end
|
tag | [address] ta[!] tag Switch the editing session to the file containing
tag.
Example
Run ctags, then switch to the file containing myfunction:
:!ctags *.c
:tag myfunction
|
tagnext | tagn[!] Find the next occurrence of the current tag.
|
tagpop | tagp[!] Forget the current tag and return to the last position of
the previous tag found.
|
tagprev | tagpr[!] Return to the previous occurrence of the current tag.
|
tagtop | tagt[!] Return to the first tag searched for and forget about all tags.
|
unabbreviate | una word Remove word from the list of
abbreviations.
|
undo | u Reverse the changes made by the last editing command.
|
unmap | unm[!] char
Remove char from the list of keyboard macros.
Use ! to remove a macro for input mode.
|
v | [address] v/pattern/[commands] Execute commands on all lines
not containing pattern. If
commands are not specified, print all such lines.
v is equivalent to g!. See global.
Example
:v/#include/d Delete all lines except "#include" lines
|
version | ve Print the editor's current version number.
|
vi | vi [+n] file Begin editing file, optionally at line
n. Can be used only in vi.
|
visual | [address] vi [type] [count] Enter visual mode (vi) at the
line specified by address. Exit with Q. type can be one of
-, ^, or .
(See the z command.)
count specifies an initial window size.
|
viusage | viu [key] Print a brief usage message describing the operation of
key, or a list of defined keys if
key is omitted.
|
wq | wq[!] Write and quit the file in one command. The ! flag forces the editor to write over any
current contents of file.
|
write | [address] w[!] [[>>] file
Write lines specified by address to
file, or write full contents of buffer if
address is not specified. If
file also is omitted, save the contents of the
buffer to the current filename. If >>file is used, write contents to the
end of an existing file. The ! flag forces the editor to write over any
current contents of file.
|
write | [address] w !command Write lines specified by address to
command.
Examples
:1,10w name_list Copy first 10 lines to name_list
:50w >> name_list Now append line 50
|
xit | x Write the file if it was changed since the last write, then quit.
|
yank | [address] ya [char] [count] Place lines specified by address in named buffer
char. If no char is given,
place lines in general buffer. count specifies
the number of lines to yank, starting with
address.
Example
:101,200 ya a
|
z | [address] z [type] [count] Print a window of text, with the line specified by
address at the top. count
specifies the number of lines to be displayed.
Type
- +
Place specified line at top of window (the default).
- -
Place specified line at bottom of window.
- .
Place specified line in center of window.
- ^
Move up one window.
- =
Place specified line in center of window, and leave
this line as the current line.
|
! | [address] !command Execute Linux command in a shell. If
address is specified, apply the lines contained
in address as standard input to
command, and replace the lines with the output.
Examples
:!ls List files in the current directory
:11,20!sort -f Sort lines 11-20 of current file
|
= | [address] = Print the line number of the next line matching
address. If no address is given, print the number
of the last line.
|
< > | [address]<[count] [address]>[count] Shift lines specified by address either
left (<) or right
(>).
Only blanks and tabs are removed in a left shift.
count specifies the number of lines to shift,
starting with address.
|
address | address Print the line specified in address.
|
Return | Return Print the next line in the file.
|
& | & [options] [count] Repeat the previous substitution (s) command. count
specifies the number of lines on which to substitute, starting with
address.
Examples
:s/Overdue/Paid/ Substitute once on current line
:g/Status/& Redo substitution on all "Status" lines
|
~ | [address] ~ [count]
Replace the previous regular expression with the previous replacement
pattern from a substitute (s) command.
|
^D | ^D Scroll through the file.
|
^Z | ^Z Suspend the editing session. Use fg
to resume session.
|