2BSD/man/edit.u

.TH EDIT UCB 4/8/79 UCB
.SH NAME
edit \- text editor (variant of the ex editor for new or casual users)
.SH SYNOPSIS
.B edit
[
.B \-r
]
name ...
.SH DESCRIPTION
.I Edit
is a variant of the text editor
.I ex
recommended for new or casual users who wish to use a command oriented editor.
The following brief introduction should help you get started with
.I edit.
A more complete basic introduction is provided by
.I "Edit: A tutorial".
A
.I "Ex/edit command summary (version 2.0)"
is also very useful.
See
.IR ex (UCB)
for other useful documents;
in particular, if you are using a \s-2CRT\s0 terminal you will want
to learn about the display editor
.I vi.
.SH "BRIEF INTRODUCTION"
To edit the contents of an existing file you begin with the command
``edit name'' to the shell.
.I Edit
makes a copy of the file which you can then edit, and tells you how
many lines and characters are in the file.
To create a new file, just make up a name for the file and try to run
.I edit
on it; you will cause an error diagnostic, but don't worry.
.PP
.I Edit
prompts for commands with the character `:', which you should see after
starting the editor.
If you are editing an existing file, then you will have some lines in
.I edit's
buffer (its name for the copy of the file you are editing).
Most commands to
.I edit
use its ``current line'' if you don't tell them which line to use.
Thus if you say
.B print
(which can be abbreviated \fBp\fR)
and hit carriage return (as you should after all
.I edit
commands) this current line will be printed.
If you
.B delete
(\fBd\fR) the current line,
.I edit
will print the new current line.
When you start editing,
.I edit
makes the last line of the file the current line.
If you
.B delete
this last line, then the new last line becomes the current one.
In general, after a
.B delete,
the next line in the file becomes the current line.
(Deleting the last line is a special case.)
.PP
If you start with an empty file, or wish to add some new lines, then the
.B append
(\fBa\fR)
command can be used.
After you give this command (typing a carriage return after the
word \fBappend\fR)
.I edit
will read lines from your terminal until you give a line consisting
of just a ``\fB.\fR'', placing these lines after the current line.
The last line you type then becomes the current line.
The command
.B insert
(\fBi\fR)
is like
.B append
but places the lines you give before, rather than after, the current line.
.PP
.I Edit
numbers the lines in the buffer, with the first line having number 1.
If you give the command
``1''
then
.I edit
will type this first line.
If you then give the command
.B delete
.I edit
will delete the first line, and line 2 will become line 1, and
.I edit
will print the current line (the new line 1) so you can see where you are.
In general, the current line will always be the last line affected by a command.
.PP
You can make a change to some text within the current line by using the
.B substitute
(\fBs\fR)
command.
You say ``s/\fIold\fR\|/\fInew\fR/'' where
.I old
is replaced by the old characters you want
to get rid of and
.I new
is the new characters you want to replace it with.
.PP
The command
.B file
(\fBf\fR) will tell you how many lines there are in the buffer you are editing
and will say ``[Modified]'' if you have changed it.
After modifying a file you can put the buffer text back to replace the file
by giving a
.B write
(\fBw\fR)
command.
You can then leave the editor by issuing a
.B quit
(\fBq\fR)
command.
If you run
.I edit
on a file, but don't change it, it is not necessary
(but does no harm)
to
.B write
the file back.
If you try to
.B quit
from
.I edit
after modifying the buffer without writing it out, you will be warned that
there has been ``No \fBwrite\fR since last change'' and
.I edit
will await another command.
If you wish not to
.B write
the buffer out then you can issue another
.B quit
command.
The buffer is then irretrievably discarded, and you return to the shell.
.PP
By using the
.B delete
and
.B append
commands,
and giving line numbers to see lines in the file you can make any
changes you desire.
You should learn at least a few more things, however, if you are to use
.I edit
more than a few times.
.PP
The
.B change
(\fBc\fR)
command will change the current line to a sequence of lines you supply
(as in
.B append
you give lines up to a line consisting of only a ``.'').
You can tell
.B change
to change more than one line by giving the line numbers of the
lines you want to change, i.e. ``3,5change''.
You can print lines this way too.
Thus ``1,23p'' prints the first 23 lines of the file.
.PP
The
.B undo
(\fBu\fR)
command will reverse the effect of the last command you gave which changed
the buffer.
Thus if give a 
.B substitute
command which doesn't do what you want, you can say
.B undo
and the old contents of the line will be restored.
You can also
.B undo
an
.B undo
command so that you can continue to change your mind.
.I Edit
will give you a warning message when commands you do affect more than
one line of the buffer.
If the amount of change seems unreasonable, you should consider doing
an
.I undo
and looking to see what happened.
If you decide that the change is ok, then you can
.I undo
again to get it back.
Note that commands such as
.I write
and
.I quit
cannot be undone.
.PP
To look at the next line in the buffer you can just hit carriage return.
To look at a number of lines hit ^D (control key and, while it is
held down D key, then let up both) rather than carriage return.
This will show you a half screen of lines on a CRT or 12 lines on a hardcopy
terminal.
You can look at the text around where you are by giving the command ``z.''.
The current line will then be the last line printed; you can get back
to the line where you were before the ``z.'' command by saying ``\'\'''.
The
.B z
command can also be given other following characters ``z\-'' prints
a screen of text (or 24 lines) ending where you are;
``z+'' prints the next screenful.
If you want less than a screenful of lines do, e.g., ``z.12'' to get
12 lines total.
This method of giving counts works in general;
thus you can delete 5 lines starting with the current line with the command
``delete 5''.
.PP
To find things in the file you can use line numbers if you happen to know
them; since the line numbers change when you insert and delete lines
this is somewhat unreliable.
You can search backwards and forwards in the file for strings by giving
commands of the form
\fB/text/\fR
to search forward for
.I text
or
\fB?text?\fR
to search backward for
.I text.
If a search reaches the end of the file without finding the text it
wraps, end around, and continues to search back to the line where you are.
A useful feature here is a search of the form
\fB/^text/\fR
which searches for
.I text
at the beginning of a line.
Similarly
\fB/text$/\fR
searches for
.I text
at the end of a line.
You can leave off the trailing / or ? in these commands.
.PP
The current line has a symbolic name ``\fB.\fR''; this is most
useful in a range of lines as in ``.,$print'' which prints the rest of
the lines in the file.
To get to the last line in the file you can refer to it by its symbolic
name ``$''.
Thus the command ``$ delete'' or ``$d'' deletes the last line in the
file, no matter which line was the current line before.
Arithmetic with line references is also possible.
Thus the line ``$\-5'' is the fifth before the last, and
``.+20'' is 20 lines after the present.
.PP
You can find out which line you are at by doing
``.=''.
This is useful if you wish to move or copy a section of text within a file or
between files.
Find out the first and last line numbers you wish to copy or move (say 10 to 20).
For a move you can then say
``10,20move "a''
which deletes these lines from the file and places them in a buffer named
.I a.
.I Edit
has 26 such buffers named
.I a
through
.I z.
You can later get these lines back by doing
``"a move \fB.\fR''
to put the contents of buffer
.I a
after the current line.
If you want to move or copy these lines between files you can give an
.B edit
(\fBe\fR)
command after copying the lines, following it with the name of the other
file you wish to edit, i.e. ``edit chapter2''.
By changing
.I move
to
.I copy
above you can get a pattern for copying lines.
If the text you wish to move or copy is all within one file
then you can just say
``10,20move $''
for example.
It is not necessary to use named buffers in this case (but you can if you wish).
.SH SEE\ ALSO
ex (UCB), vi (UCB),
`Edit: A tutorial', by Ricki Blau and James Joyce
.SH AUTHOR
William Joy
.SH BUGS
See
.IR ex (UCB).