NAME
edit - Edits a file line by line with a simplified command
set
SYNOPSIS
edit [-lRv] [-wnumber] [+subcommand] [-] [file ...]
edit [-lRv] [-t tag] [file ...]
edit -r[file] [-lRv] [file]
The edit command provides a line editor designed for begin-
ning users.
FLAGS
-l Indents appropriately for LISP code, and accepts the (,
), {, }, [, and ] characters (parentheses, braces, and
brackets) as text rather than interpreting them as vi
subcommands. The LISP modifier is active in open or
visual modes.
-r[file]
Recovers file after an editor or system crash. If you
do not specify file, a list of all saved files is
displayed.
-R Sets the readonly option, preventing you from altering
the file.
-t tag
Loads the file that contains tag and positions the edi-
tor at tag. To use this flag, you must first create a
database of function names and locations using the ctags
command.
-v Invokes the visual editor. When the -v flag is speci-
fied, an enlarged set of subcommands are available,
including screen editing and cursor movement features.
See vi.
-wnumber
Sets the default window size to number lines.
- Suppresses all interactive user feedback. If you use
this flag, file input/output errors do not generate an
error message.
+subcommand
Begins the edit with the specified editor search or sub-
command. When subcommand is not entered, a + (plus
sign) sets the current line to the bottom of the file.
Normally edit sets the current line to the last line of
the file, or to some specified tag or pattern.
DESCRIPTION
The edit command is part of a family of editors that also
includes ed, ex, and vi. It is a simplified version of the
ex editor, which itself is built on the ed line editor.
To edit the contents of a file, enter:
edit file
If file is the name of an existing file, edit copies it to a
buffer and displays the number of lines and characters in
it. Then it displays a : (colon) prompt to show that it is
ready to read subcommands from standard input.
If file does not already exist, edit tells you this. You
can give more than one file, in which case edit copies the
first file into its buffer and stores the remaining
filenames in an argument list for later use.
The edit command does not make changes to the file until you
use the w subcommand to write the changes.
Editing Modes
The edit command operates in one of two modes:
Command mode
In command mode, the edit editor recognizes and executes
subcommands. When you start the editor, it is in com-
mand mode.
Text input mode
In text input mode, you can add text to the editing
buffer. You enter text input mode by using the a, c, or
i subcommand. To exit text input mode (and return to
command mode), you enter a . (dot) alone at the begin-
ning of a line.
Subcommand Syntax
The general format of an edit subcommand is as follows:
[address]subcommand[argument ...][count]
If you do not specify an address, edit works on the current
line. When you start the edit program, the current line is
the last line in the buffer. As you edit the buffer, the
current line changes to the last line affected by a subcom-
mand. (When edit reads a file into its buffer, the last
line affected by the process of reading is the last line in
the file.) If you add a numeric count to most subcommands,
edit works on the specified number of lines.
The value for address can be a line number or a pattern to
be matched or, in some cases, a range of line numbers or
patterns. To specify a range, separate two line numbers or
patterns with a comma or a semicolon (for example, 1,5 or
1;5). In a range, the second address must refer to a line
that follows the first addressed line in the range.
To work with different parts of a file, you must know how to
find out the current line and how to address different lines
in a file.
Addressing Lines Within a File
The simplest way to address a line within a file is to use
its line number. But this can be unreliable because line
numbers change when you insert and delete lines. The edit
command provides a way to search through the buffer for
strings. Given the following address, edit searches forward
for pattern:
/pattern/
If given the following address, edit searches backward for
pattern:
?pattern?
If a forward search reaches the end of the buffer without
finding pattern, it continues the search at the beginning of
the file until it reaches the current line. A backward
search does just the reverse.
The following characters have special meanings in these
search patterns:
^ Matches the beginning of a line.
$ Matches the end of a line.
Thus, you can use /^pattern/ to search for patterns at the
beginning of a line, and /pattern$/ to search for patterns
at the end of the line.
Lines can be addressed by their line numbers; for example,
11 refers to line 11 of the buffer. In addition, the
current line is addressed with a . (dot) and the last line
in the buffer is addressed with a $ (dollar sign). This is
useful when working with a range of lines. For example, the
following command displays all lines from the current line
to the last line in the buffer:
.,$print
Do not confuse the meaning of $ in text patterns, end of
line, with its meaning in addresses, last line.
Arithmetic with line references is also possible, so that
$-5 refers to the fifth line from the last and .+20 refers
to the line 20 lines past the current line. You can also
use the = (equal sign) command to find out the line number
of the current line or the last line, as follows:
.=
$=
To view the next line in the buffer, press <Return>. Press
<Ctrl-d> to display the next half-screen of lines.
Using a Family of Editors
As you become more experienced with edit, you might want to
try the advanced features of one of the other editors in the
family. Because edit is part of a family of editors, you
can apply your knowledge of edit to the other editors in the
family.
The ex editor is a powerful interactive line editor. The
edit subcommands work the same way in ex, but the editing
environment is somewhat different. For example in edit,
only the characters ^ (circumflex), $ (dollar sign), and \
(backslash) have special meanings as pattern-matching char-
acters; however, several additional characters also have
special meanings in ex.
SUBCOMMANDS
Unless otherwise noted, all subcommands work by default on
the current line; address is optional. You can use the full
subcommand or its abbreviation. Subcommand abbreviations
appear after the command in the sections that follow.
You can use the 1,$p subcommand to display the entire con-
tents of the buffer.
The edit program recognizes and interprets the following
subcommands when it displays the colon prompt.
Adding Text
[address]append (a)
Appends the text you type after the current line, if you
do not specify an address. If you specify an address,
the a subcommand appends text after the addressed line.
If you specify address 0 (zero), the a subcommand places
the text at the beginning of the buffer.
As you type your text, press <Return> at the end of each
line. When you have entered all your text, enter a .
(dot) alone at the start of a line. This ends text
input mode and returns to command mode.
[address]insert (i)
Places the given text before the specified line. Enter
a . (dot) to return to command mode. The last line
input becomes the current line.
Changing Text
[address1[,address2]]change (c)
Replaces the current line or addressed line or lines
with the input text. Enter a . (dot) to return to com-
mand mode. If any lines are input, the last input line
becomes the new current line.
Deleting Text
[address1[,address2]]delete [buffer] (d)
Removes the specified line or lines from the editing
buffer. The line following the last deleted line
becomes the current line. If you specify a buffer by
giving a letter from a to z, edit saves the specified
lines in that buffer or, if the letter is uppercase,
appends the lines to that buffer.
Displaying Text and Determining the Current Line
file [file] (f)
Displays the current filename along with the following
information:
o Whether it was modified since the last write.
o What the current line is.
o How many lines are in the buffer.
o What percentage of the way through the buffer the
current line is.
Also, sets the current filename if file is speci-
fied.
[address1[,address2]]number (nu)
Displays each specified line or lines preceded by its
buffer line number. The last line displayed becomes the
current line.
[address1[,address2]]print (p)
Displays the specified line or lines. The last line
displayed becomes the current line.
[address]=
Displays the line number of the addressed line. If you
do not specify an address, displays the line number of
the last line.
[address]z
Displays a screen of text, beginning with the current or
specified line.
[address]z-
Displays a screen of text, with the specified (or
current) line at the bottom of the screen.
[address]z.
Displays a screen of text, with the specified (or
current) line in the middle of the screen.
Editing Another File
edit file (e)
Begins an editing session on a new file. The editor
first checks to see if the buffer was modified since the
last write subcommand. If it has, edit issues a warning
and cancels the edit subcommand. Otherwise, it deletes
the complete contents of the editor buffer, makes the
named file the current file, and displays the new
filename. After ensuring that this file can be edited,
it reads the file into its buffer. If edit reads the
file without error, it displays the number of lines and
characters that it read. The last line read becomes the
new current line.
next [file] (n)
Copies the next file in the command line argument list
to the buffer for editing.
You can edit a sequence or group of files. You can use
the next subcommand to edit each file on the command
line in turn, or to specify a list of filenames to edit
(using the shell pattern matching syntax) instead. The
wildcard character % represents the name of the current
edit file and can be used to form filenames. If file is
specified, the command line argument list is replaced,
and an edit command is performed on the first file.
Making Global Changes
[address1[,address2]]global/pattern/command ... (g)
Marks each of the specified lines that matches the pat-
tern, then carries out the specified subcommands (com-
mands) on each marked line.
A single command or the first command in a subcommand
list appears on the same line as global. The remaining
commands must appear on separate lines, where each line
(except the last) ends with a \ (backslash). The
default subcommand is print.
The subcommand list can include the append, insert, and
change subcommands and their associated input. In this
case, if the ending period comes on the last line of the
command list, you can omit it. The undo subcommand and
the global subcommand itself, however, cannot appear in
the command list. See also Substituting Text.
Moving or Copying Text
[address1[,address2]]move address3 (m)
Repositions the specified line or lines to follow
address3. The first of the moved lines becomes the
current line. address1 and address2 are optional; you
must specify address3.
[address1[,address2]]yank [buffer] (ya)
Places the specified line or lines in buffer (identified
by a single alpha character name a to z).
[address]put buffer (pu)
Retrieves the contents of the specified buffer and
places it after address. If you do not specify a
buffer, edit restores the last deleted or yanked text.
Thus, you can use this subcommand together with delete
to move lines or with yank to duplicate lines between
files.
Quitting an Editing Session
quit (q)
quit! (q!)
Ends the editing session. The quit command does not
write the editor buffer to a file; if you have modified
the contents of the buffer since the last write, edit
displays a warning message and does not end the session.
In this case, either use the quit! subcommand to discard
the buffer or write the buffer and then quit.
Saving Text
[address1[,address2]]write file (w)
Writes the contents of the specified line or lines to
file. The default range is all lines in the buffer.
edit displays the number of lines and characters that it
writes. If you do not specify a file, edit uses the
current filename. If file does not exist, edit creates
it.
preserve (pre)
Saves the current editor buffer as though the system had
just crashed. Use this command when a write subcommand
has resulted in an error, and you do not know how to
save your work.
recover file (rec)
Recovers file from the system save area. Use this after
a system crash, or a preserve subcommand.
Substituting Text
[address1[,address2]]substitute/pattern/replacement/ (s)
[address1[,address2]]substitute/pattern/replacement/g (s)
Replaces on each specified line the first instance of
pattern with the replacement pattern replacement. If
you add the global indicator g, it replaces all
instances of pattern on each specified line.
Undoing a Change
undo (u)
Reverses the changes made in the buffer by the last
buffer editing subcommand. Note that global subcommands
are considered a single subcommand to an undo. You can-
not undo a write or an edit subcommand.
RELATED INFORMATION
Commands: ed(1)/red(1), ex(1), vi(1)/vedit(1)/view(1).
Acknowledgement and Disclaimer