perm filename TEACH[V,VDS] blob sn#417484
filedate 1979-05-14 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00020 PAGES
C REC PAGE DESCRIPTION
C00003 00002 The command HELP ETEACH<cr>, typed to the system, copies a file named
C00006 00003 General remarks (come back later if this seems confusing).
C00009 00004 PAGE changing commands.
C00014 00005 How to EXIT and how to ENTER a file.
C00018 00006 WINDOW and ARROW moving cammands.
C00028 00007 EDITING. The LINE-EDITOR and how to add text.
C00034 00008 Simple line-editing commands.
C00040 00009 More editing commands. Insertions and deletions. αβ<CR> αI α<cr> αβD
C00045 00010 PAGING. Introducing and deleting PAGE MARKS. EXTEND commands.
C00050 00011 File switching commands. αβ? αβH αβε αβλ and αβ∃ File switches.
C00060 00012 Line marking. αβM and αM
C00063 00013 ATTACH and COPY.
C00068 00014 FIND commands. Single page, multipage and directory searches.
C00078 00015 Substitution commands.
C00081 00016 Text justification. XJUST,XJFILL XSJFILL and XJGET
C00094 00017 Margin fixing commands. XALIGN<cr> XCENTER<cr> XINDENT<cr> → and ←
C00098 00018 Some other EXTEND commands.
C00104 00019 System commands to evoke E.
C00108 00020 Summary.
The command HELP ETEACH<cr>, typed to the system, copies a file named
TEACH into your file area and allows you to read this file and modify it
for practice. If you did this, you may modify this copy with immunity.
You are now looking at page 2 of TEACH (see top line with asterisks).
Page 1, the "directory" page, is automatically prepared by E.
ABREVIATIONS used in TEACH to characterize commands to E.
α means hold the "CONTROL" key down while typing a character.
β means hold the "META" key down while typing a character.
αβ means hold both "CONTROL" and "META" keys down while typing.
⊗ means hold either the "CONTROL" key alone or both "CONTROL"
and "META" keys down while typing.
<cr> carriage RETURN key. <lf> LINE feed key.
<tab> TAB key. <alt> ALT-mode key.
<bs> Back-Space key. <form> FORM-feed key.
<vt> the VT key. <clear> the CLEAR key.
CURRENT means the current line (normally with an → or ↔ on the left).
Most commands are single characters typed with one or both of the two
special keys held down as specified by α, β or ⊗ as defined above. When a
number is shown in a command, this is by way of example, and any desired
decimal number may be used.
Typing ordinary characters will cause you to enter the LINE-EDITOR and
can easily lead to the overwriting of desirable text, so be careful. If
you do make a mistake or get confused, type <alt> before you type a <cr>.
A line starting with !! is an instruction that you are to follow.
!! Type αP (pronounced CONTROL P) (hold CONTROL down and type P).
(Use this command to get to the next page.)
General remarks (come back later if this seems confusing).
E is a page oriented editor designed for use with a display terminal.
It brings one page of the text into core, as requested, and it displays a
portion of this page as if through a window. A line pointer and an
underscoring cursor mark the position in the text where editing is to
occur. Special commands allow you to go from page to page, to move the
window up or down on the page and to move the line pointer and cursor as
E does not make a separate disk copy of the file being edited unless
requested to do so by the use of a special command (described later), so
take care or you may damage a file, even one belonging to someone else.
E achieves its speed (1) by using the system line editor and by only
changing the core copy of the text on the completion of a line edit, and
(2) by updating the disk copy of the page only on the completion of a page
edit (automatically effected by moving to another page).
Always remember that the text shown on the display may not, and
usually does not, mirror the true state of the actual text on the disk.
E is best understood by recognizing that it operates in a variety of
different modes and that many commands are appropiate only to certain
modes or, worse yet, that they may mean quite different things depending
upon the mode that E is in at the time that the command is given.
The dominant mode is the NORMAL mode. This allows for page, window
and line-marker movement commands and commands which enter the other
modes. You will first learn some normal-mode commands.
!! Type αP or αβP for the next page. DO THIS NOW.
PAGE changing commands.
Most page-changing commands are single characters typed with the
CONTROL key held down or with both the CONTROL and the META keys held
down. They may take modifiers as shown below. Examples:
⊗P Go to the next PAGE. (You have just done this).
⊗-⊗P Back up to the previous page. !! Try this and then return.
⊗+⊗7⊗P Go foreward 7 pages if possible, otherwise to the last page.
⊗-⊗3⊗P Go backward 3 pages if possible otherwise to the first page.
⊗7⊗P Go to page 7 if possible otherwise to the last page.
!! If you are sure that you know these commands, skip around a bit
and come back here by typing ⊗4⊗P. Note that the directory on page 1
lists the first line of each page.
You are now looking at a longer page than before. Note two things:
1 The header line contains asterisks, the page number and the file name.
2 A trailer line contains dots, where formerly there were asterisks,
along with some suplimentary information which will be explained later.
The asterisks mean that you are seeing the page through a window
starting at the top of the page, while the dots mean that there is yet
more on the page than that shown.
To get to see another windowful of a long page one types <form>, that
is, depress the FORM key. (Note that no control keys are required.)
!! So type <form> now.
If somehow you failed to understand what happened, then type <vt>,
that is, hit the key labeled "vt" and you will go back a windowful.
!! So do this now and then come back here. Do this several times.
When you tire of this you might note that dots have now replaced the
asterisks in the header line. Some additional information has also
appeared in this line, to wit, a record of the line number of the first
line that now shows on the window. At this time this number is 33.
Now turn your attention to the trailer line which is now seen to
contain asterisks indicating that we now see to the end of this particular
page, which is still a rather short one. The information on this line
tells you that the arrow is pointing to line 33 as it does and that there
are 65 lines on this page, further that you are looking at page 4 and that
there are 20 pages in this file. We will ignore the rest of the
information for the time being.
By this time, you will have also observed some rather nonsensical
information below the trailer line which is, in fact a record of some of
the commands that you have been typing and some acknowledgements of these
commands. Form a practice of watching this information to be sure that
your commands are properly acknowledged before you type too far ahead. At
the moment about the only thing to observe is that the <form> and <vt>
commands are echoed in a rather funny way.
This page has been made rather short so that you can see what happens
under these conditions, so go to the next page to continue.
!! So type ⊗P as you did earlier.
How to EXIT and how to ENTER a file.
But maybe you have had enough for one session and would like to quit.
As mentioned earlier you have created a special file on your own area by
the name of TEACH and you will be able to re-enter this file by typing the
system command ET TEACH followed by the "return" key.
Remember this ET TEACH<cr>.
And now to quit, simply type ⊗E , that is, type the letter "E" with
either the <control> key or both <control> and <meta> keys depressed.
!! If you want to quit now, do so, otherwise continue and come back
here when you are ready to quit, to make sure you know how to resume.
If you want to start a new file say one named FOO, you type to the
system the command CET FOO<cr>. Having created such a file and having
left it, you can, of course, reenter it by the command ET FOO<cr>.
If you should get confused and try to create a new file with the same
name as one that you already have, the editor will warn you of this and
allow you to either correct your mistake or, if you want, to replace the
old file by a newly created one.
The commands that you have learned are: (Remember what ⊗ means)
⊗P Go to the next page. ⊗-⊗P Go back a page.
⊗+⊗3⊗p Go forward 3 pages. ⊗-⊗3⊗P Go back 3 pages.
⊗7⊗P Go to page 7. ⊗∞⊗P Go to the last page.
<form> Go to the next windowful. <vt> Go back a windowful.
!! You need one of these now! (Note that there are dots on trailer line.)
Other commands that you also know are:
⊗E Terminate an editing session.
And the system commands:
CET BAZ Create a new file "BAZ" (assuming you want such a file).
ET TEACH RE-ENTER the file named TEACH on your own area.
Since this page was only slightly longer than a windowful, you have
had the opportunity of observing that the command <form> only advances the
window enough to get to the end of the page. If you try it again now you
will also observe that it does not cross page boundaries.
!! Type <form> several times and observe what happens to the arrow.
!! Now try typing αβ<form> ( <form> with <control> and <meta> depressed).
WINDOW and ARROW moving cammands.
But first, are you sure that you read all of the previous page?
!! To make sure type αβ<vt> to back up a windowful over the page boundary.
So two other useful commands are:
αβ<form> Get a new windowful, crossing a page boundary if the old
windowful is at the end of a page and if there is another
page in the file.
αβ<vt> Back up a windowful, crossing a page boundary if the old
windowful is at the beginning of a page and if there is
an earlier page in the file.
Now a new subject,- that of ARROW moving.
If you have been observing the arrow to the left, you will have noted
that it has usually, but not always, pointed to the first or the last line
on the window. This arrow points to the CURRENT line, i.e. the line that
would be edited were you to enter the LINE-EDIT mode. For convienence, we
will call this line the "arrow line".
While in the NORMAL mode, as we now are (or at least should be), the
command <cr>, that is hitting the "return" key, will cause the arrow to
move down a line and the command <bs> will cause it to move up a line.
Both of these commands can take arguments which are simply decimal
numbers typed ahead of the command itself, but NOTE CAREFULLY, the
arguments MUST be typed with control keys depressed, preferably with both
<control> and <meta>, while the commands themselves, that is, the <return>
or <bs> are typed without control keys.
The following commands can then be added to our list:
<cr> Move the arrow down a line. <bs> Move the arrow up a line.
⊗4<cr> Move the arrow down 4 lines. ⊗3<bs> Move the arrow up 3 lines.
To these we can also add:
⊗> The same as ⊗4<cr>. ⊗< The same as ⊗4<bs>.
⊗2⊗> Move the arrow down 8 lines. ⊗2⊗< Move the arrow up 8 lines.
⊗≥ Move the arrow down half a windowful.
⊗≤ Move the arrow up half a windowful.
⊗∧ Move the arrow to the top of the window.
⊗∨ Move the arrow to the bottom of the window.
!! It may be well to stop here and go through your repartee of commands.
You will observe that the arrow moving commands will sometimes also
move the window should this be necessary to prevent the arrow from leaving
the window. When this happens the window will usually be positioned so
that the arrow line will be at the middle of the window.
More window moving commands.
Having moved the arrow to a line of interest you may wish to position
the window without moving the arrow with respect to the text. There are
several commands designed for this purpose. The more useful ones are:
⊗J JUMP the window so that the arrow line will be at the top of the
⊗0⊗J Jump the window so that the arrow line will be in the middle of
⊗-⊗J Jump the window so that the arrow line will be at the bottom of
Alternatively, you may want to see a few lines more at the top or the
bottom of the window and you would prefer that the arrow not be moved with
respect to text but you are willing for this to happen if the arrow would
otherwise go off the screen. The commands to do this are:
⊗T Show 4 more lines at the top of the window.
⊗B Show 4 more lines at the bottom of the window.
!! Try these commands now. You will observe their action is
inhibited when they are given near the page boundaries.
When you start trying to actually edit a file you will find that you
will need just about all of the commands that have been described.
Line numbers and their use.
E is not primarily a line-number oriented editor. However, there are
times when it is desirable to get to some specific line on a page, perhaps
you have tried to compile a program and the compiler has given you a list
of errors in terms of the pages and lines on which they occur.
Just as you can get to any page, say page 6, by typing ⊗6⊗P , you can
type ⊗2⊗9⊗L to get to line 29 on the current page. The command ⊗L
(without an argument) gets you to line 1 and the command ⊗∞⊗L will get you
to the bottom row of asterisks at the end of the page. Relative arguments
may also be used with the L command, but you will find that the commands
<cr>, <bs>, ⊗>, ⊗<, ⊗≥ and ⊗≤ are usually much more convenient.
Note that the P command without an argument implies the next page
while the L command without an argument implies line 1. These conventions
are arbitrary, but once you get used to them you will find them very
The most useful line-number commands are:
⊗L Go to line 1 on the page. This is the fastest way to get to the
start of the page.
⊗3⊗5⊗L Go to line 35 on the page.
⊗∞⊗L Go to one line beyond the end of the page. The arrow will point
to the row of asterisks. This is the fastest way to get to the
end of the page in a position to add more text.
E also allows you to move directly to any designated line in the
window, by means of the following commands.
⊗∧ Go to the first line of text in the current window.
⊗4⊗∧ Go to the 4th line of text from the top of the current window.
⊗∨ Go to the last line of text in the current window.
⊗3⊗∨ Go to the 3rd line of text from the bottom of the current window.
!! Try skipping around by asking for specific lines by number. You
will observe that the arrow will simply move to the specified line if it
is on the window. If a shifting of the window is required, then the arrow
line will usually be in the middle of the window.
It will pay to become very conversant with all of these commands so
that you cam minimize the number of key strokes that you will need to get
to any desired location in your text. This will save your time, minimize
the chances of error and greatly reduce the load on the system.
You have already observed that the trailer line always tells the line
number of the CURRENT line i.e. the line to which the arrow is pointing.
There is a special command ⊗XLINCNT<cr> that causes E to supply some more
information about this line and about the current page. !! Try it.
EDITING. The LINE-EDITOR and how to add text.
You enter the LINE-EDIT mode simply by starting to type.
In other words, typing a character without a CONTROL or META key,
(almost any character key except for certain non-printing keys) will cause
that character to appear in the line to which the arrow is pointing at the
time. If you are in the NORMAL mode, when you start to type, the typed
character will overwrite the first character in the line. A cursor will
appear under the first character in the line and also under that position
in which the next typed character will appear. As you continue to type
additional characters will be overwritten.
Remember- If you make a mistake or get confused, the safest thing to
do is to type <alt> . If you do this, while in the line editor, the
corrections that you have just made will go away.
Adding text at the bottom of the page.
Perhaps the simplest thing to do is to add text at the bottom of the
page. This you can do, 1) by moving the arrow to the bottom row of
asterisks (which, of course, are not in the text at all) and then 2) by
just typing. (Do you remember the fastest way to get to get to the end of
Incidentally, do not try to move the arrow down the page by simply
typing a lot of <cr>'s. This forces ETV to do a lot of extra work,
increases the chance of error, slows down the response and loads up the
system. There are better ways and besides it is always better to use an
argument with any command that will accept one (and many do, besides those
specifically mentioned) than to type the command as many times as it is
!! So type something at the end of this page, limiting your typing to
a few words without a <cr>.
You will observe that the asterisks disappear to be replaced by what
ever you type.
!! Now type a <cr> which will terminate your line of text allowing
the asterisks to reappear below your new text. If you look at the end of
the header line you will observe that the letter "W" has appeared,
indicating that something has been changed on the page that is not yet
!! Since you may not want to preserve this, your first attempt, for
posterity, move the cursor back to your line and type αβD. Your newly
typed line is gone beyond recall.
Incidentally, if you have been so careless as to type αβD when the
arrow was pointing at a line that was in the original TEACH text, rather
than at your newly created line, you can get the original text back by
typing ⊗XCANCEL. This only works if you have not saved the altered page
(as you will do when you switch pages), and, needless to say, ⊗XCANCEL
will cause all corrections and additions, that you may have made to the
current page (not just to the current windowful), to go away.
One word of caution,- The LINE-EDITOR will only handle lines having
less than roughly 126 characters. You will be warned when you reach this
limit but it is possible to create lines tha cannot be subsequently edited
without first dividing them. Fortunately there are other commands that
are not so limited.
!! Now go to the next page for more.
Simple line-editing commands.
The line-editor is actually a part of the main operating system and
when you are operating in this mode you are typing directly to the system.
The line editor has a whole set of commands that you will need to learn.
In this Teach manual we will consider only that subset of commands that
you will have to know almost at once.
Certain keys and particularly most normal characters, when typed with
both the <control> and <meta> keys depressed are called, activation
characters. These activation characters terminate the editing of the line
and cause the resulting line to be returned to E.
Six almost essential line-editor commands that you will need to know are:
α<space> Move the cursor one character position to the right without
affecting the text.
α<bs> Move the cursor by one character position to the left, without
affecting the text. If the cursor is 1 position beyond the
end of the text when this command is given, then this command
erases the text as it backs up.
<char> Overwrite the character, at the cursor position with the typed
character <char>, where <char> can be any normal character.
αD Delete the character at the cursor position, moving the text
at the right of the deleted position by one character position
to the left to fill in the missing position. (Note: NOT αβD.)
Note that this command, if given at the end of a line, will
add the next line to the end of the current one, but it will
do this only if the resulting line will contain less than 126
<meta><char> Insert the character <char> at the cursor position, moving
the rest of the text over one character position to make room.
<cr> Finish editing the line and return control to E, that is, back
to the normal mode with the arrow moved to the next line.
(Note: <cr> behaves differently if you are in the LINE-INSERT
or INSERT modes, soon to be described.)
Remember that the line corrections do not appear in the core image and
E has no knowledge of your line-editor corrections until you have typed an
activation character, (of which the <cr> is the most common).
Furthermore, a corrected page is not transfered to the disk record
until you have switched pages, or have issued a specific request for the
page to be saved. This has one nice side effect in that if you have made
a grevious mistake in editing a page you can undo your errors by simply
replacing the present core copy by the one that is still on the disk.
As noted earlier,the command to undo a page of unwanted corrections is
αβXCANCEL<cr> , where the "X" is typed with the <control> and (meta> keys
while the word CANCEL and the <cr> are typed without control keys.
The command to write out a page is αβ. , that is, the character "."
(period) is typed with both control keys depressed. This command is
unnecessary if you are switching to another page (or another file) but it
is wise to use this command if you ar stopping to do something for a few
minutes or if you are going to try some global command that might mess up
your page should you make a mistake.
!! To see how this all works, try editing this paragraph, doing all
sorts of things to it and when you have messed it up most horribly, then
try the ⊗XCANCEL command. The ⊗XCANCEL command may take a little time to
function (since it involves a disk reference) so do not be impatient.
More editing commands. Insertions and deletions. αβ<CR> αI α<cr> αβD
There are two special modes that make editing very much easier. You
will need to know how to enter and how to leave these modes.
1) The LINE-INSERT mode is entered by the command αβ<cr> .
Typing the command αβ<cr> causes E to enter a special LINE-INSERT
mode, signalled to the user by the appearance of the double arrow "↔" to
the left of a newly inserted blank line which will be inserted ahead of
line to which the single arrow had been pointing, or, if the command is
given when one is already in the LINE-EDITOR mode, the line will be split
at the cursor position and the new blank line will appear between the two
segments of the the former CURRENT line.
When E is in this mode, everything that you type (again except for
certain activation characters) will simply be inserted into the text at
the position marked by the double arrow and the cursor. Carriage returns
will be accepted as such and you can type as much as you want, for all the
world as if you you were typing on a typewriter, with the added convience
that the rest of the text is always moved down to make room. Most of the
LINE-EDITOR commands are available to you and you may move the cursor
around and make corrections to the line that you are typing as desired.
To leave the LINE-INSERT mode, you must type one of several possible
commands, the simplest one being α<cr> . This causes you to leave the mode
with the cursor (now a single arrow) pointing to the last line of your
insertion. The command <alt> can also be used to leave this mode, but it
does different things depending upon the exact situation at the time that
it is given. You might experiment with this a bit.
2) The INSERT mode is an even simplier affair.
This is entered from the LINE-EDIT mode by the command αI .
Typing αI when in the LINE-EDIT mode causes everything that you type
thereafter until the next line-edit command to be accepted as an
insertion, just as would otherwise be the case if you were to hold down
the <meta> key while you were typing. You may not find this special mode
to be of much value, but you need to know of its existance as you may
enter it by accident and you will need to know what to do if this happens.
To leave this mode and still stay in the LINE-EDIT mode, one can, for
example, type α<space> or α<bs>. The command α<cr> is useful for leaving
this special mode AND the LINE-EDITOR at the same time.
It is almost as important to be able to delete text as to create it,
as you will find when you misinterpret these instructions and make bad
The command αβD ,if given while in the normal mode, causes the line at
the arrow to be deleted. This command can take an argument specifying the
number of lines that are to be deleted, starting with the current one, but
take care, this is a very powerful command and you can easily delete more
than you intend.
PAGING. Introducing and deleting PAGE MARKS. EXTEND commands.
Having added some text to a file you will want to break it up into
pages, and then occasionally you will want to combine two pages into one.
It is good practice to limit the size of each page to something of the
order of 150 lines and to start each page with a comment or title line
that defines the material on the page. As mentioned earlier, E keeps a
directory, usually on page 1, which contains the first lines of all
subsequent pages, and this directory may be used by you directly and
through some search commands, to be described later, to help you find
things that you may want to refer to in the file.
The commands to do these things are similar to the ⊗XCANCEL command
that you learned earlier in that they begin with the letter X typed with
control keys. These are called EXTEND commands, so let's take time out to
learn something about these commands.
Since there are many more commands in E than there are letters, it is
necessary to have some multi-letter commands. Such commands are signalled
by the letter "X" which is typed with one or both of the control keys and
then followed immediately with the letters that make up the name, typed
without control keys. There is a further complication , however, in that
the name may be shortened as long as it does not become ambiguous, and
certain EXTEND commands may take arguments that follow the name and these
must be separated from the name by a delimiter.
Two simple EXTEND commands that apply to paging are:
αβXM<cr> The command to introduce a page mark is αβXMARK<cr>. This
command is given with the arrow pointing to the line that is to be
the first line on the new page.
(This can be shortened as shown but cannot be shortened to MA !)
αβXDEL<cr> The command to join two pages, that is to DELETE a page-mark,
is αβXDELETE<cr>, which can be shortened as shown. This command
is given when the first of the two pages (or a portion of it) is
being viewed. The arrow need not be at any particular place on the
File switching commands. αβ? αβH αβε αβλ and αβ∃ File switches.
One of the first things that you will want to do after you have
mastered the basic elements of editing will be to switch from file to
file, both to read or edit another file and later to copy information from
one file into another. E has some special commands to make this easy to
Perhaps the very first file you will need to reference is the expanded
version of the E manual that is always available on the system. The two
commands that you will need for this purpose are αβ? and αβH.
αβ? This command switches you to a special file E.ALS[UP,DOC]. The
first time that you give this command you will find that page 2 of
this file is displayed. Page 2 lists information as to the most
recent modifications to the editor E. You can, however switch
from page to page, using all of the page and window moving
commands as required, perhaps going to the directory page (page 1)
to find out the number of the page that concerns you at the
moment. After you have once referenced this file on subsequent
references (during any one editing session) you will be returned
to that page and line where you were when you left this file.
Incidentally, this method of referencing the E manual causes you to
enter the file in what is called the READONLY mode. You will find that E
will not let you change the disk copy of this file, at least not
unintentionally. Should you try to do this, E will ask you to confirm the
desired mode. You must then type either READONLY if it was all a big
mistake, or READWRITE, if you really want the changes to be made.
Please do not change the E manual. If you find a mistake in it, let
ALS know. Note that the ⊗? command does not create a separate copy of the
E manual as the command HELP ETEACH did for the TEACH file. You are
referencing the system copy of this file which others will also use.
αβH This command returns you to the last file that you were using. So
if you give this command while looking at the manual you will get
back to your former position in your (H for HOME) file. (The αβ?
file is never considered to be the HOME file, however).
!! By way of practice, try switching to the αβ? file, locate the page
that first mentions αβH, and then return here using the αβH command. You
will later learn a much simplier way to find the desired page in a file by
using the FIND command described on page 14. Hint, look at the diectory
or at page 3.
Switching to other files.
It is also very easy to switch to any other file by using one of two
commands. One simply types <control><meta>ε , that is the Greek letter
epsilon typed with the two control keys, followed by the name of the file
desired and a <cr>. This opens the designated file in the so-called
READ-WRITE mode, so that you can edit the new file if you so desire.
Should you wish only to reference this file, (and not to edit it) you
can use the Greek letter lambda (λ for look) instead of the Greek letter
epsilon (ε for enter) and the file will be opened in READ-ONLY mode. It
is good practice to always use λ instead of ε whenever this is sufficient
and E will keep you from unwittingly damaging a file.
αβεFOO<cr> Switch to file FOO (assuming that you have previously creaated
such a file) so that it is available for editing.
αβλFOO<cr> Switch to file FOO in the readonly mode.
Certain switches may be used with these file switching commands.
These are single letters, either with an argument or without, that are
typed after the file name and before the terminating <cr>. The fact that
they are switches is signalled by starting them with a slash (/), and by
typing them without control bits. The more useful of these are:
/C Create a new file with this name.
/26P Open the file at the start of page 26.
/34E Open the file at the end of page 34.
/E Open the file at the end of its last page.
/4P/45L Open the file with the arrow pointing at line 45 on page 4.
Note that these same switches may be used with the ET command to the
system when entering E at the start of an editing session. See page 18
for a more complete list of available switches.
Once you have entered a file, (during any one editing session) E keeps
a record of the file name and your position in this file and assigns a
serial number to this information. You need then only type this number as
a preceding argument to either αβε or αβλ ,without then being required to
retype the name of the file. You must observe the difference between
these commands as typed without an argument, in which case a following
file name must be typed terminated by a <cr> and the case where an
argument is used in which case the symbol αβε or αβλ is the command and in
which a file name and the terminating <cr> are not to be typed. (As
always, the argument must be typed with control bits).
Actually E only keeps such records on the last 8 files that you have
referenced, but this is usually enough for any one editing session.
αβ∃ As a mnemonic aid, E will show you the numbers that have been
assigned and the corresponding file names. To see this, type the
command αβ∃ , that is the symbol ∃ (for "there exists") typed with
the two control keys. The desired information will appear on the
3 lines at the bottom of the screen. For your last referenced
file, the serial number in the listing will be replaced by the
letter H to show you that you need only type αβH to go back to it.
Line marking. αβM and αM
E provides the facility for marking up to 23 line locations in any one
file with a rapid way to return to these locations by using the following
commands. These marks are preserved with file switching during any one
session and they are still available when one returns to a previously
marked file. They are also sticky with respect to the text so that they
still reference the speciific text line to which they were assigned even
when the line numbers are changed by the addition or deletion of other
lines ahead of the marked lines. When a marked line is deleted its
assigned mark disappears.
αβM Mark the arrow line, that is, record the page number and
line number for the CURRENT arrow location,
αβ-αβM Clear the MARK, if any, for the CURRENT arrow location.
⊗XZMARKS<cr> Clear all marks in the file that is being edited.
αM Go to the next MARK (cyclicly).
α2αM Go the the second Mark from here.
αβ-αM Go backward one mark (cyclicaly).
!! This might be a good time to review, so go back to page 2 and skim
through the file putting marks on those lines that you especially want to
remember. When you have done this, then go through the file again by
using αM's to switch from one marked line to another. If you feel that
you would like to know more about some aspect you might try switching to
the E.ALS[UP,DOC] file by typing ⊗? to see what it the more complete
manual has to say. When you switch back, by using the ⊗H command, you
will find that your marks are still available.
ATTACH and COPY.
The ATTACH and COPY commands permit blocks of lines or copies of them
to be moved up and down on the page, from page to page and from file to
file as desired.
The user is reminded of the existance of an attachment by the
replacement of the usual cursor to the left with a vertical bar "|" which
defines the extent of the attachment. If the attachment contains 8 or
fewer lines they all show, otherwise only the first 4 and the last 3 lines
are shown, separated by a dotted line to signal some omissions from the
screen (but of course, not from the attachment).
Once an attachment has been effected, it can be moved arround on the
page, from page to page and from file by all of the usual commands for
moving the normal arrow. When a final resting place has been located the
command αβE causes the attachment to be released. You will find the MARK
commands usefull for marking places to which you want to move text, before
you have attached the desired lines. In this way you can get the
attachment moved to the the desired location with the minimum of effort
and in the shortest possible time. You can mark lines that you want to
move but when marked lines are attached their marks are deleted.
⊗A ATTACH the CURRENT line and mark it with a "|".
Note that the line has been assigned to a special attach buffer
although it is still shown on the screen in its original location.
⊗3⊗A ATTACH 3 lines starting with CURRENT and mark these with "|'s".
⊗C COPY the CURRENT line, attach the copy and mark it with a "|".
Note that in this case a copy has been made and the old line is
still in its original place.
⊗4⊗C COPY 4 lines starting with CURRENT, attach the copy and mark
⊗E Deposit the attached lines where displayed and Exit ATTACH mode.
Note: this command has a different meaning when one is NOT in
the ATTACH mode (it then means EXIT from E). Don't stutter when
typing it. Give the system time to react.
αβK KILL the attached lines (they go away beyond recall) and exit
from the ATTACH mode. Note that αK does not work (for safety).
Relative arguments may also be used to add or subtract lines from the
end of an attachment. See αβ? for more details.
A word of warning, a hazard is involved in moving lines from page to
page, and from file to file as the attachment can be lost if the system
should crash during the interval between the attachment of the lines and
the final updating of the page to which they are moved. This hazard can
be avoided by copying the lines rather than attaching them and then going
back and deleting the original copy. This precaution is hardly necessary
for a few lines of text and, of course, it is unnecessary if the text is
being only moved around on the same page.
This is a good place to comment on the RIPPLING report, that you may
noticed in the scratch-pad lines at the bottom of the screen. This notice
appears when a major rearrangement of the text between records becomes
FIND commands. Single page, multipage and directory searches.
E provides facilities for searching for desired strings of characters,
either delimited, that is as separate words, or undelimited. We will
explain only the simplest form of such searches in this manual. As soon
as you have mastered these, you may want to refer to ⊗? to get the entire
Single page searches.
Single page FIND commands start searching at the CURRENT line, that is
at the line marked by the arrow, and search forward toward the end of the
page. When the desired string has been found, the arrow is moved to line
in question. If the searched-for-string is not found, this fact is
reported and the arrow is left in its original position.
The command αβFSmith<cr> searches for the word "smith", that is, for
this as a separate word, whether it is spelled with an initial capital or
without, (but it nust be separated from the rest of the text by the usual
word delimiters, spaces, tabs, punctuation marks etc.).
Note that no space is used between the F and the start of the string,
and that both the control and the meta keys ARE used with the "F" but
that control keys ARE NOT used with the characters of the string nor with
If you want to find "smith" even should it be a part of a longer
sequence of letters, then you type αFsmith<cr> , that is you use only the
control key <control> with the letter "F".
One further complication: Using a simple carriage return, to signal
the end of the searched-for-string, leaves the cursor at the beginning of
the line in which the string is found. Often times it is desirable to
have the beginning of the found string marked as well, particularly if
there are more than one occurance of the searched-for-string in a single
line. To effect this, one merely used the control key <control> with the
Having found the first example of some desired string, you can find
the next example of this same string by the command αβ* , that is, the
symbol "*" typed with both control and meta keys. Note that this command
simply repeats your previous find request, whether delimited or not, and
that the control keys used with the repeat command do not have the
significance that they did for the original command. Caution, this
command always repeats the last search command given, whether it be the
the single page search that has been described or a multi-page search as
will be described below.
αβFtheα<cr> then will find the next occurance of the word "the" and
this will be signalled by the cursor being left under the first letter
of this word.
Similarly using only the <control> key with the repeat command, that
is, typing <control>* will leave the cursor under the start of the
string for repeat searches.
!! Before going on it might be wise to practice these commands a few
!! Move the arrow to the top of the page and then search for the
word "the". Do this several times both leaving the cursor at the start
of the line and leaving it under the first letter of the string. Note
that one can switch between α* and αβ* with the wanted results for
Multipage searches are a bit more complicated in that you have to use
an EXTEND command.
At the present time there is but one command beginning with the
letter "F" so only the "F" needs to be typed. Never-the-less we
must separate this letter from the string that follows by a space
to prevent the string from being taken as a part of the command
The multipage search commands then are of the form:
αβXF Smith<cr> Find a delimited string "smith".
αXF Smith<cr> Find the string regardless of surroundings.
Note that CONTROL and META keys are not used with the F and that a
space is required between the F and the string which is typed without
As before one may use the <control> key with the <cr> to cause the
cursor to be positioned under the first character of the found string.
The command ⊗* repeats the last find request, be it a single page
search or a multi-page search.
Multi-page searches may take some time for large files. You are kept
informed as to the progress of the search by a running display of the
number of the page that is being searched, This information appears to
the right on the header line.
You may interrupt a multi-page search at any time by typing <esc>
followed by the letter "I". The search will continue to the end of the
page it is on and then terminate.
One final form of search is so useful that it should be described
here. This command makes a search on the directory page (which contains
the first lines from all pages in the file) but then the referenced page
is displayed and the cursor is positioned either at the first occurance
of the searched-for-string (which, of course, will be on the first line)
or at the second occurance of this string. One need not be looking at
the directory to give this command.
The proper final character for these two forms of directory search are:
αP Make the search over the directory page and then display
the referenced page with the line pointer at the top line.
αβP Make the search over the directory page and then display
the referenced page with the line pointer at the second
occurance of the referenced string (the first will be in
the first line of the page).
Finding the Nth occurance.
The search can be for the first occurance of the specified string
or for the n'th occurance.
⊗3⊗Fsmith<cr> Finds the 3rd occurance of SMITH.
If one only wants to know how many examples of the searched-for-string
there are in the file (or till the end of the page) then one asks for
an impossibly large number and if the search is terminated without
finding the specified number, E will report the number that it did
find. An argument of ⊗∞ (meaning some very large number) is useful
for ensuring that E doesn't find enough.
!! Find how many times the word "the" is used on this page.
One frquently wishes to find all of the occurances of some string in
order to change them to something else, perhaps you have misspelled a
name or you wish to rename some variable used in a program.
Substitution commands begin as any normal search command except that
one uses, as a special termination for the searched-for-string, the
symbol "\" , that is a backslash which must be typed with both control
keys thus <control><meta>\ and then one follows this with the
substitution string terminated by either a <cr> or a <control><cr> .
The usual conventions apply to the searched-for-string, that is,
capitalization is ignored but the substitution string is made with due
attention to the case of the letters. The searched-for-string itself,
(and not its delimiters if it is a delimited search) is removed and
replaced by the substitution string, which, of course, need not contain
the same number of characters.
A substitution may be made for the first occurance only or for any
specified number. A repeat command is available and it is good practice
to always make a single substitution first just to make sure that one is
making the desired substitution and then to use the repeat command to
make the rest of the desired substitutions.
The repeat command is <control><meta>\ . This can be preceeded by an
argument (typed with control keys) and the symbol "∞" (infinity) may be
used. The αβ\ acts as the command and no further delimiter is used.
Text justification. ⊗XJUST,⊗XJFILL ⊗XSJFILL and ⊗XJGET
(These are EXTEND commands, see p. 10.)
The line filling command ⊗XJFILL adjusts the lengths of lines by
moving words from line to line as required to achieve the specified
maximum line length (right margin). At the same time this command permits
the left margin to be fixed at any desired position with a separate
settable indentation for the first line of each paragraph (crown margin),
and it allows one either to preserve blank lines or to specify the desired
number of blank lines preceding each paragraph (blanklines margin). The
⊗XJUST command does the same things as the ⊗XJFILL command but also
justifies the right margin by distributing additional spaces between
words. Both of these commands put two spaces after each sentence that is
terminated by any of the characters ".?!:", provided that two spaces (or
the end of a line) originally followed the sentence.
The range of application of any justification command may be limited
by a prefixed decimal argument. If no argument is specified, the command
affects the entire page. If there is an attachment, the command works on
the ATTACH buffer instead of the page. When the range is limited by a
positive argument, the command starts with the arrow line and goes forward
whereas for a negative argument the command works on the specified number
of lines before (but not including) the arrow line.
To find out the current margins, use an argument of zero with a
justification command, for example ⊗0⊗XJFILL<cr>. A zero argument is alwo
useful for setting the margins without doing any justification.
!! Type α0αXJF<cr> to verify this, and then read the next paragraph.
The last four numbers reported refer to the crown margin, the left
margin, the right margin, and the blanklines margin, respectively. The
value -1 for this last number means that existing blank lines are to be
preserved through any justification and that no new blank lines are to be
added. The margins can be set by following a justification extended
command name with the new margin values, separated by commas and given in
the above order (C,L,R,B). Margin values given are sticky, that is, once
changed they stay changed (until changed again) and they need not be
retyped with subsequent commands. There are no limits to the values that
may be assigned to the margins, so it is possible to create lines that
cannot be edited with the LINE-EDITOR.
The full explanation of these commands is beyond the scope of this
TEACH manual. See ⊗? for details.
EXAMPLES FOR BEGINNERS AND CASUAL USERS
As a beginner you might like to use these commands without getting
into all of the gory details. Here are some examples. We will start by
using the default margins.
⊗6⊗XJFILL<cr> will left-justify 6 lines starting with the arrow line.
⊗XJUST<cr> will left-justify and pad to the right margin the whole page.
⊗XJFILL 8<cr> will left-justify the whole page using a new crown margin
of 8 (actually using a tab to start each paragraph); the other
margins will be preserved.
⊗4⊗XJUST ,,69<cr> will justify 4 lines, padding them to the new right
margin of 69 while preserving the other margins.
DETECTING WHERE PARAGRAPHS START
A simple procedure is used to determine where paragraph breaks occur in
the input text being justified. For justification purposes, a new
paragraph is indicated by (1) an empty line or (2) a line indented
exactly the right amount (that is, a line having the right number of
leading blank columns, whether tabs or spaces or both are used to make
The amount of indentation that indicates a paragraph in the input text
will be called the DETECT-PARAGRAPH margin, or simply the DETECT margin.
Note: If you haven't set the detect margin explicitly (see below), and
if the crown margin and the left margin are the same, then only blank
lines will indicate new paragraphs in the input text (otherwise every
line would become a separate paragraph).
The detect margin is normally the same as the crown margin. However,
for changing the crown margin of justified text that has no blank lines
between paragraphs, the detect margin can be set explicitly to any
value. The detect margin can be set in any justification command by
typing its value immediately after the extended command name and
following it with a slash ("/"). After the slash, the normal margins
(crown, left, right, blanklines) can be specified, separated by commas.
For instance, the command ⊗XJUST 8/7<cr> would set the detect margin to
8 (for paragraphs indented with one tab or eight spaces) and then would
rejustify the text so that each paragraph was indented only 7 spaces.
Note that the detect margin remains in effect until you change either
the crown margin, the left margin, or the detect margin itself. Thus
after the above command, E would no longer recognize the new crown lines
(now indented 7 spaces) as such since the detect margin would still be
8. The detect margin can be set without changing any of the other
margins, as in ⊗XJUST 7/<cr>. The command ⊗XJUST 8<cr> explicitly sets
the crown margin to 8 and implicitly also sets the detect margin to the
same value (8).
SEPARATING SENTENCES WITHIN PARAGRAPHS: ⊗XSJFILL and ⊗XSJUST
The task of rearranging sentences within a paragraph or of moving
sentences from one paragraph to another is simplified by the use of the
⊗XSJFILL and ⊗XSJUST commands. These commands separate all sentences in
the specified text so that each sentence starts on a different line.
The first sentence in each paragraph will be indented by the crown
margin and all other sentences will be indented by the left margin.
Within each sentence, the text is justified exactly as it would be by
the ⊗XJFILL and ⊗XJUST commands. These commands accept new margins
following the command name just like the other justification commands.
!! Try this command on this page, but only if you are prepared to
undo its effect with the αXCANCEL command. Type αXSJF<cr> and see how
the sentences are separated; then type αXCANCEL<cr> and find your way
back to the next paragraph.
FIGURING OUT JUSTIFICATION MARGINS FROM TEXT ON THE PAGE: ⊗XJGET
The ⊗XJGET command causes E to scan a specified section of text and to
determine the indents of crown lines and non-crown lines and the column
position of the rightmost character. This command sets these values
into the crown margin, left margin and right margin for subsequent use
by the ⊗XJUST, ⊗XJFILL, ⊗XSJUST and ⊗XSJFILL commands. ⊗XJGET normally
sets the blank-line parameter to its initial default value of -1 (which
means that all blank lines encountered during justification will be
preserved and no new blank lines will be generated). However, any
margins given explicitly in the ⊗XJGET command will override the
corresponding margins determined from the text. This command types out
the resultant settings of the margins.
By using this command one can redetermine the parameters that were used
when the text was justified, presumably at some earlier editing session
or perhaps by someone else and one can do this without having to make
the determination by visual inspection.
!! You might like to experiment with the ⊗XJGET command since it
does nothing to your text. You will observe that you may get different
answers depending upon the location of the arrow, the number of lines
examined, and whether the text had been right justified.
JUSTIFYING TABULAR TEXT
There is a complete set of additional commands, similar to those
that have been described, that are designed for use with tabular
material. As an example, the tabular lists of commands with these
explanations that you have seen in TEACH (the next page is a good
example) were justified by using these commands. See ⊗? for details on
the "T" justification commands ⊗XTJFILL, ⊗XTJUST, ⊗XTJGET, and ⊗XTAB.
Margin fixing commands. ⊗XALIGN<cr> ⊗XCENTER<cr> ⊗XINDENT<cr> ⊗→ and ⊗←
(3 EXTEND commands and 2 that are not.)
These commands are related to the justification commands in that they
adjust margins but the text is not shuffled between lines. These commands
take a prefixed argument specifying the number lines that are to be
processed, but the default is one line, rather than the entire page as it
was for the justification commands. Negative, zero and positive prefixed
arguments may be used.
Some examples follow:
⊗XALIGN<cr> Align the arrow line so that non-blank text begins at the
the default column, which initially is 0.
⊗8⊗XALIGN 4<cr> Align 8 lines starting at the arrow line so that non-blank
text of each line starts after the specified number (4) of
leading blank columns.
⊗XCENTER<cr> Center the arrow line between the left and right margins
currently in effect for normal justifications commands.
⊗XINDENT<cr> Indent the arrow line by the default value which is set
initially at 4, that is move the text to the right by 4
character positions. If the resulting total indentation
is 8 or more spaces, TABs will be used to the extent
⊗5⊗XINDENT -3<cr> Change the default indent value to -3 and indent 5
lines by this amount, that is, move the 5 lines to the
left by 3 character positions (but do not shift any line
far enough to lose any non-blank characters). Note that
the relative indentations of the lines moved is not
changed by an indent command as long as an attempt is not
made to shift any line too far to the left.
The following indenting commands are easier to use than the ⊗XINDENT
command. The absolute value of the default ⊗XINDENT value is used as
the amount to indent or unindent text by in these (non-EXTEND) commands.
⊗4⊗→ Shift 4 lines to the right using the absolute value
associated with the ⊗XINDENT command.
⊗6⊗← Move 6 lines to the left by the absolute value associated
with the ⊗XINDENT command (if this is possible without
losing any non-blank characters, otherwise stop shifting
each line when this limit is reached).
Some other EXTEND commands.
You have, by now, encountered several EXTEND commands. There are
several other EXTEND commands that you will want to know about very soon
but you will have to refer to ⊗? for full details. For completeness, we
will review the way that these commands are written and list some of the
more useful EXTEND commands.
Certain commands are potentially too dangerous to be safely evoked by
a single character. There are also more commands than can be obtained with
single characters. These contingencies are handled by the EXTEND command
specified as follows:
⊗X Accept the string that follows as a command. This string
may be abbreviated as long as no ambiguity results. The
string is typed without control keys and it must be
terminated by a space if parameters are required, or by a
<cr> or other deliniter.
The more useful EXTEND commands are:
⊗XBREAK<cr> Break a long line into segments as defined by a line
length that may be changed but that is initially set to
80. This command will accept lines of any length and does
not require them to contain cr's. See ⊗? page 12 for
details. Note especially that this command breaks the
line quite arbitrarily and not necessarily at a word
⊗XCANCEL<cr> Do not write out the current page but instead reread it in
from the disk.
⊗XCLOSE<cr> Close the file. This allows others to read it if you had
modified it, without interfering with your ability to
still read it. You may, however, be prevented from making
further modifications should someone else start to read
⊗XDEFINE<cr> Define a macro-command which can then be executed any
desired number of times by a simple (⊗#⊗Y) command. See
page 25 in ⊗? for detailes.
⊗XDELETE<cr> See page 10 for details.
⊗XDRAW<cr> Redraw the complete screen. Used when unwanted marks show
on the screen from whatever cause. (This does the same
thing as ⊗V).
⊗XFIND<cr> see page 14 for details on FIND.
⊗XGO<cr> Exit from E and repeat the last SNAIL command.
⊗XJOIN<cr> Join as many lines as specified by an initial argument
into one line, regardless of its resulting length. The
default argument is 2. See ⊗? page 12 for details.
⊗XJUST<cr> See page 16 for details.
*XLINCNT<cr> Report the number of characters in the current line, and
the number of characters on the entire page.
⊗XMAIL<cr> Send mail to the designated person. See ⊗? for details.
⊗XMARK<cr> See page 10 for details.
⊗XPAREN<cr> A Parenthesis matching command. See ⊗? page 22 for
⊗XPROTECT<cr> Display or change the PROTECTION for the file being
viewed. See ⊗? page 19 for details.
⊗XQUIT<cr> Quit (exit) E WITHOUT updating the disk record.
⊗XREADONLY<cr> Inhibit any commands that will cause the file to be
written out and ask for confirmation of desired mode
⊗XREADWRITE<cr> Disable the write-inhibit.
⊗XREMIND<cr> Send reminder. See ⊗? for details.
⊗XSEND<cr> Send message. See ⊗? for details.
⊗XRSYS PRGM<cr> Exit and runs SYS:PRGM
⊗XRUN PRGM<cr> Exit and runs DSK:PRGM
⊗XSPOOL<cr> Spool the page that is being displayed, or the attach
buffer only if something is attached.
⊗XXSPOOL<cr> XGP spool the page that is being displayed, or the attach
buffer if something is attached.
System commands to evoke E.
Create a new file with the name and extension as
specified by string.
The file will contain a directory page and one
ETV <existing file name><cr>
Enter E with the specified file. If the file has
but one text page, display this, otherwise
display the directory page.
ETV Reenter E with the most recently edited file and
display the most recently opened page (subject
to certain restrictions as described in the
Copy file named string2 into a new file named
string1, start E and display the text as above.
If the string2 file has a valid directory this
is executed relatively rapidly, if not a new
directory will have to be created. (See the note
below with respect to the /N switch).
Similar to ETV <string1>←<string2> except for the
way it handles the TMPCOR files. (See the Monitor
Manual for this and other RPG features).
Switches, when used, are strings beginning with a slash which are
placed immediately after the file name that they are to modify.
/E Open the file with the arrow pointing to the asterisks
on the last page of the file (in the position to add text).
/6E Open the file with the arrow pointing to the asterisks
at the end of page 6.
/F Repage the file as it is being read in, limiting the number
of lines on a page to a maximum of 33 (1 windowful).
Existing page marks are respected.
/62F Repage the file as before but with the maximum number of
lines set at 62 instead of the default value of 33.
/5L Open the file with the arrow at line 5.
This is not very useful by itself but see below.
/N No Directory. The inexperienced user is advised to avoid
using this switch as there are some commands that cause
trouble when used with no-directory files.
/2P Open the file displaying page 2.
/R Open the file in the read only mode. This is useful
if one wants to examine a file without any danger
of inadvertently modifying it.
example: ET TEACH[UP,DOC]/R<cr>
When two or more switches are to be used they may be put together
example: ET MYFILE(R4P5L)<cr>
Remember that you still have not been told all there is to know about E.
It would be a good idea for you to spend some time looking at ⊗? so that
you will know something about the many other commands that are available.
Dan Swinehart wrote TV, the original version of the display editor,
and created the original version of TEACH. Fred Wright wrote the FAIL
version of TV (called E). This has been extended and modified by many
different people, with major contributions by Arthur Samuel, Brian Harvey,
and Martin Frost.
Suggestions as to ways to improve this version of TEACH should be sent
An attempt has been made to present a coordinated view of E. To this
end some simplications have been made. The experienced user may develop
techniques that are not described in this manual. Any outright errors
should, however, be called to our attention.