mirror of
https://github.com/PDP-10/its.git
synced 2026-01-29 13:21:11 +00:00
Add TEACHE(MACS).
Needs EMACS libraries: DOCOND and TRMTYP.
This commit is contained in:
committed by
Eric Swenson
parent
93ae7c143a
commit
98b16d595b
693
src/emacs/teach.1
Normal file
693
src/emacs/teach.1
Normal file
@@ -0,0 +1,693 @@
|
||||
This is the -*-Text-*- of the EMACS tutorial.
|
||||
|
||||
DOCOND declarations for operating-system dependencies.
|
||||
{Alternatives:ITS,Twenex}
|
||||
{Flag:?ITS}
|
||||
{Flag:?Twenex}
|
||||
{Char Replace:+ITS=>C-Z->C-C}
|
||||
{Char Replace:+ITS=>C-M-Z->C-M-C}
|
||||
|
||||
{end}
|
||||
You are looking at the EMACS tutorial. Comments on this document
|
||||
should be mailed to BUG-EMACS.
|
||||
|
||||
EMACS commands generally involve the CONTROL key (sometimes labelled
|
||||
CTRL or CTL) or the META key (sometimes labelled EDIT). Rather than
|
||||
write out META or CONTROL each time we want you to prefix a character,
|
||||
we'll use the following abbreviations:
|
||||
|
||||
C-<chr> means hold the CONTROL key while typing the character <chr>
|
||||
Thus, C-F would be: hold the CONTROL key and type F.
|
||||
M-<chr> means hold the META or EDIT key down while typing <chr>.
|
||||
If there is no META or EDIT key, type <ALT>, release it,
|
||||
then type the character <chr>. "<ALT>" stands for the
|
||||
key labelled "ALT" or "ESC".
|
||||
|
||||
Important note: if you must exit at some point, type C-X C-Z.
|
||||
The characters ">>" at the left margin indicate directions for you to
|
||||
try using a command. For instance:
|
||||
<<Blank lines inserted here by startup of TEACH-EMACS>>
|
||||
>> Now type C-V (View next screen) to move to the next screen.
|
||||
(go ahead, do it by depressing the control key and V together).
|
||||
From now on, you'll be expected to do this whenever you finish
|
||||
reading the screen.
|
||||
|
||||
Note that there is an overlap when going from screen to screen; this
|
||||
provides some continuity when moving through the file.
|
||||
|
||||
The first thing that you need to know is how to move around from
|
||||
place to place in the file. You already know how to move forward a
|
||||
screen, with C-V. To move backwards a screen, type M-V (depress the
|
||||
META key and type V, or type <ALT>V if you don't have a META or EDIT
|
||||
key).
|
||||
|
||||
>> Try typing M-V and then C-V to move back and forth a few times.
|
||||
|
||||
|
||||
SUMMARY
|
||||
-------
|
||||
|
||||
The following commands are useful for viewing screenfuls:
|
||||
|
||||
C-V Move forward one screenful
|
||||
M-V Move backward one screenful
|
||||
C-L Clear screen and redisplay everything
|
||||
putting the text near the cursor at the center.
|
||||
|
||||
>> Find the cursor and remember what text is near it.
|
||||
Then type a C-L.
|
||||
Find the cursor again and see what text is near it now.
|
||||
|
||||
|
||||
BASIC CURSOR CONTROL
|
||||
--------------------
|
||||
|
||||
Getting from screenful to screenful is useful, but how do you
|
||||
reposition yourself within a given screen to a specific place?
|
||||
There are several ways you can do this. One way (not the best, but
|
||||
the most basic) is to use the commands previous, backward, forward
|
||||
and next. As you can imagine these commands (which are given to
|
||||
EMACS as C-P, C-B, C-F, and C-N respectively) move the cursor from
|
||||
where it currently is to a new place in the given direction. Here,
|
||||
in a more graphical form are the commands:
|
||||
|
||||
Previous line, C-P
|
||||
:
|
||||
:
|
||||
Backward, C-B .... Current cursor position .... Forward, C-F
|
||||
:
|
||||
:
|
||||
Next line, C-N
|
||||
|
||||
You'll probably find it easy to think of these by letter. P for
|
||||
previous, N for next, B for backward and F for forward. These are
|
||||
the basic cursor positioning commands and you'll be using them ALL
|
||||
the time so it would be of great benefit if you learn them now.
|
||||
|
||||
>> Do a few C-N's to bring the cursor down to this line.
|
||||
|
||||
>> Move into the line with C-F's and then up with C-P's.
|
||||
See what C-P does when the cursor is in the middle of the line.
|
||||
|
||||
Lines are separated by a pair of characters, a Return and a Linefeed,
|
||||
but EMACS almost always makes them look like one character. You
|
||||
can think of it as a Newline.
|
||||
|
||||
>> Try to C-B at the beginning of a line. Do a few more C-B's.
|
||||
Then do C-F's back to the end of the line and beyond.
|
||||
|
||||
When you go off the top or bottom of the screen, the text beyond
|
||||
the edge is shifted onto the screen so that your instructions can
|
||||
be carried out while keeping the cursor on the screen.
|
||||
|
||||
>> Try to move the cursor off the bottom of the screen with C-N and
|
||||
see what happens.
|
||||
|
||||
If moving by characters is too slow, you can move by words. M-F
|
||||
(Meta-F) moves forward a word and M-B moves back a word.
|
||||
|
||||
>> Type a few M-F's and M-B's. Intersperse them with C-F's and C-B's.
|
||||
|
||||
Notice the parallel between C-F and C-B on the one hand, and M-F and
|
||||
M-B on the other hand. Very often Meta characters are used for
|
||||
operations related to English text whereas Control characters operate
|
||||
on the basic textual units that are independent of what you are
|
||||
editing (characters, lines, etc). There is a similar parallel between
|
||||
lines and sentences: C-A and C-E move to the beginning or end of a
|
||||
line, and M-A and M-E move to the beginning or end of a sentence.
|
||||
|
||||
>> Try a couple of C-A's, and then a couple of C-E's.
|
||||
Try a couple of M-A's, and then a couple of M-E's.
|
||||
|
||||
See how repeated C-A's do nothing, but repeated M-A's keep moving
|
||||
farther. Do you think that this is right?
|
||||
|
||||
Two other simple cursor motion commands are M-< (Meta Less-than),
|
||||
which moves to the beginning of the file, and M-> (Meta Greater-than),
|
||||
which moves to the end of the file. You probably don't need to try
|
||||
them, since finding this spot again will be boring. If you need the
|
||||
shift key to type a "<", then you must also use the shift key to type
|
||||
M-<. Otherwise, you would be typing M-, .
|
||||
|
||||
The location of the cursor in the text is also called "point". To
|
||||
paraphrase, the cursor shows on the screen where point is located in
|
||||
the text.
|
||||
|
||||
Here is a summary of simple moving operations including the word and
|
||||
sentence moving commands:
|
||||
|
||||
C-F Move forward a character
|
||||
C-B Move backward a character
|
||||
|
||||
M-F Move forward a word
|
||||
M-B Move backward a word
|
||||
|
||||
C-N Move to next line
|
||||
C-P Move to previous line
|
||||
|
||||
C-A Move to beginning of line
|
||||
C-E Move to end of line
|
||||
|
||||
M-A Move back to beginning of sentence
|
||||
M-E Move forward to end of sentence
|
||||
|
||||
M-< Go to beginning of file
|
||||
M-> Go to end of file
|
||||
|
||||
>> Try all of these commands now a few times for practice.
|
||||
Since the last two will take you away from this screen,
|
||||
you can come back here with M-V's and C-V's. These are
|
||||
the most often used commands.
|
||||
|
||||
Like all other commands in EMACS, these commands can be given
|
||||
arguments which cause them to be executed repeatedly. The way you
|
||||
give a command a repeat count is by typing C-U and then the digits
|
||||
before you type the command. If you have a META or EDIT key, you can
|
||||
omit the C-U if you hold down the META or EDIT key while you type the
|
||||
digits. This is easier, but we recommend the C-U method because it
|
||||
works on any terminal.
|
||||
|
||||
For instance, C-U 8 C-F moves forward eight characters.
|
||||
|
||||
>> Try giving a suitable argument to C-N or C-P to come as close
|
||||
as you can to this line in one jump.
|
||||
|
||||
The only apparent exception to this is the screen moving commands,
|
||||
C-V and M-V. When given an argument, they scroll the screen up or
|
||||
down by that many lines, rather than screenfuls. This proves to be
|
||||
much more useful.
|
||||
|
||||
>> Try typing C-U 8 C-V now.
|
||||
|
||||
Did it scroll the screen up by 8 lines? If you would like to
|
||||
scroll it down you can give an argument to M-V.
|
||||
|
||||
|
||||
WHEN EMACS IS HUNG
|
||||
-----------------
|
||||
|
||||
If EMACS gets into an infinite (or simply very long) computation which
|
||||
you don't want to finish, you can stop it safely by typing C-G.
|
||||
You can also use C-G to discard a numeric argument or the beginning of
|
||||
a command that you don't want to finish.
|
||||
|
||||
>> Type C-U 100 to make a numeric arg of 100, then type C-G.
|
||||
Now type C-F. How many characters does it move?
|
||||
If you have typed an <ALT> by mistake, you can get rid of it
|
||||
with a C-G.
|
||||
|
||||
If you type <ALT> <ALT>, you get into something known as a
|
||||
"minibuffer". That is an advanced feature of EMACS. We mention it
|
||||
now only to say that you can get out of it with one or two C-G's if
|
||||
you get into it by accident.
|
||||
|
||||
|
||||
INSERTING AND DELETING
|
||||
----------------------
|
||||
|
||||
If you want to type text, just do it. Characters which you can see,
|
||||
such as A, 7, *, etc. are taken by EMACS as text and inserted
|
||||
immediately. Type <Return> (the carriage-return key) to insert a line
|
||||
separator.
|
||||
|
||||
You can delete the last character you typed by typing <Rubout>.
|
||||
<Rubout> is a key on the keyboard, which might be labelled "Delete"
|
||||
instead of "Rubout" on some terminals. More generally, <Rubout>
|
||||
deletes the character immediately before the current cursor position.
|
||||
|
||||
>> Do this now, type a few characters and then delete them
|
||||
by typing <Rubout> a few times. Don't worry about this file
|
||||
being changed; you won't affect the master tutorial. This is just
|
||||
a copy of it.
|
||||
|
||||
>> Now start typing text until you reach the right margin, and keep
|
||||
typing. When a line of text gets too big for one line on the
|
||||
screen, the line of text is "continued" onto a second screen line.
|
||||
The exclamation mark at the right margin indicates a line which has
|
||||
been continued.
|
||||
>> Use <Rubout>s to delete the text until the line fits on one screen
|
||||
line again. The continuation line goes away.
|
||||
|
||||
>> Move the cursor to the beginning of a line and type <Rubout>. This
|
||||
deletes the line separator before the line and merges the line onto
|
||||
the previous line. The resulting line may be too long to fit, in
|
||||
which case it has a continuation line.
|
||||
>> Type <Return> to insert the separator again.
|
||||
|
||||
Remember that most EMACS commands can be given a repeat count; Note
|
||||
that this includes characters which insert themselves.
|
||||
|
||||
>> Try that now -- type C-U 8 * and see what happens.
|
||||
|
||||
You've now learned the most basic way of typing something in
|
||||
EMACS and correcting errors. You can delete by words or lines
|
||||
as well. Here is a summary of the delete operations:
|
||||
|
||||
<Rubout> delete the character just before the cursor
|
||||
C-D delete the next character after the cursor
|
||||
|
||||
M-<Rubout> kill the word immediately before the cursor
|
||||
M-D kill the next word after the cursor
|
||||
|
||||
C-K kill from the cursor position to end of line
|
||||
M-K kill to the end of the current sentence
|
||||
|
||||
Notice that <Rubout> and C-D vs M-<Rubout> and M-D extend the parallel
|
||||
started by C-F and M-F (well, <Rubout> isn't really a control
|
||||
character, but let's not worry about that). C-K and M-K are like C-E
|
||||
and M-E, sort of, in that lines are opposite sentences.
|
||||
|
||||
Now suppose you kill something, and then you decide that you want to
|
||||
get it back? Well, whenever you kill something bigger than a
|
||||
character, EMACS saves it for you. To yank it back, use C-Y. Note
|
||||
that you don't have to be in the same place to do C-Y; This is a good
|
||||
way to move text around. Also note that the difference between
|
||||
"Killing" and "Deleting" something is that "Killed" things can be
|
||||
yanked back, and "Deleted" things cannot. Generally, the commands
|
||||
that can destroy a lot of text save it, while the ones that attack
|
||||
only one character, or nothing but blank lines and spaces, do not
|
||||
save.
|
||||
|
||||
For instance, type C-N a couple times to position the cursor
|
||||
at some line on this screen.
|
||||
|
||||
>> Do this now, move the cursor and kill that line with C-K.
|
||||
|
||||
Note that a single C-K kills the contents of the line, and a second
|
||||
C-K kills the line itself, and make all the other lines move up. If
|
||||
you give C-K a repeat count, it kills that many lines AND their
|
||||
contents.
|
||||
|
||||
The text that has just disappeared is saved so that you can
|
||||
retrieve it. To retrieve the last killed text and put it where
|
||||
the cursor currently is, type C-Y.
|
||||
|
||||
>> Try it; type C-Y to yank the text back.
|
||||
|
||||
Think of C-Y as if you were yanking something back that someone
|
||||
took away from you. Notice that if you do several C-K's in a row
|
||||
the text that is killed is all saved together so that one C-Y will
|
||||
yank all of the lines.
|
||||
|
||||
>> Do this now, type C-K several times.
|
||||
|
||||
Now to retrieve that killed text:
|
||||
|
||||
>> Type C-Y. Then move the cursor down a few lines and type C-Y
|
||||
again. You now see how to copy some text.
|
||||
|
||||
What do you do if you have some text you want to yank back, and then
|
||||
you kill something else? C-Y would yank the more recent kill. But
|
||||
the previous text is not lost. You can get back to it using the M-Y
|
||||
command. After you have done C-Y to get the most recent kill, typing
|
||||
M-Y replaces that yanked text with the previous kill. Typing M-Y
|
||||
again and again brings in earlier and earlier kills. When you
|
||||
have reached the text you are looking for, you can just go away and
|
||||
leave it there. If you M-Y enough times, you come back to the
|
||||
starting point (the most recent kill).
|
||||
|
||||
>> Kill a line, move around, kill another line.
|
||||
Then do C-Y to get back the second killed line.
|
||||
Then do M-Y and it will be replaced by the first killed line.
|
||||
Do more M-Y's and see what you get. Keep doing them until
|
||||
the second kill line comes back, and then a few more.
|
||||
If you like, you can try giving M-Y positive and negative
|
||||
arguments.
|
||||
|
||||
|
||||
FILES
|
||||
-----
|
||||
|
||||
In order to make the text you edit permanent, you must put it in a
|
||||
file. Otherwise, it will go away when your invocation of EMACS goes
|
||||
away. You put your editing in a file by "visiting" the file. What
|
||||
visiting means is that you see the contents of the file in your EMACS;
|
||||
and, loosely speaking, what you are editing is the file itself.
|
||||
However, the changes still don't become permanent until you "save" the
|
||||
file. This is so you can have control to avoid leaving a half-changed
|
||||
file around when you don't want to. Even then, EMACS really makes a
|
||||
new version of the file and doesn't change the old version at all (so
|
||||
that you can verify or throw away your changes later if you like).
|
||||
|
||||
If you look near the bottom of the screen you will see a
|
||||
line that starts with "EMACS (Fundamental) Main:" and continues with
|
||||
the filename {+Twenex:DSK:<your
|
||||
directory>TEACH-EMACS.TUTORIAL}{+ITS:your-directory; machine: TEACH
|
||||
TEXT}. This is the name of your own temporary copy of the
|
||||
text of the EMACS tutorial; the file you are now visiting. Whatever
|
||||
file you visit, that file's name will appear in that precise
|
||||
spot.{*Refill:}
|
||||
|
||||
The commands for visiting and saving files are unlike the other
|
||||
commands you have learned in that they consist of two characters.
|
||||
They both start with the character Control-X. There is a whole series
|
||||
of commands that start with Control-X; many of them have to do with
|
||||
files, buffers, and related things, and all of them consist of
|
||||
Control-X followed by some other character.
|
||||
|
||||
Another thing about the command for visiting a file is that you have
|
||||
to say what file name you want. We say the command "reads an argument
|
||||
from the terminal" (in this case, the argument is the name of the
|
||||
file). After you type the command
|
||||
|
||||
C-X C-V Visit a file
|
||||
|
||||
EMACS will ask you for the file name. You should end the name with
|
||||
the Return key. {+ITS:If you are using one of the USERS or GUEST
|
||||
directories, you should make the first name of the file be your own
|
||||
name, and use the second name to distinguish among your files.} After
|
||||
this command, you will see the contents of the file in your EMACS.
|
||||
You can edit the contents. When you wish to make the changes
|
||||
permanent, issue the command{*Refill:}
|
||||
|
||||
C-X C-S Save the file
|
||||
|
||||
A new version of the file will be created. When the operation is
|
||||
finished, EMACS prints the name and version saved. You should save
|
||||
fairly often, so that you will not lose very much work if the system
|
||||
should crash.
|
||||
|
||||
If you forget to save before visiting a different file, EMACS will
|
||||
remind you that you made changes and ask you whether to save them.
|
||||
(If you don't save them, they will be thrown away. That might be what
|
||||
you want!) You should answer with a "Y" to save them or a "N" to
|
||||
throw the changes away.
|
||||
|
||||
To make a new file, just visit it "as if" it already existed. Then
|
||||
start typing in the text. When you ask to "save" the file, EMACS
|
||||
will really create the file with the text that you have inserted.
|
||||
From then on, you can consider yourself to be editing an already
|
||||
existing file.
|
||||
|
||||
It is not easy for you to try out visiting a file and continue with
|
||||
the tutorial. But you can always come back into the tutorial by
|
||||
starting it over and skipping forward. So, when you feel ready, you
|
||||
should try visiting a file named "FOO", putting some text in it, and
|
||||
saving it; then exit from EMACS and look at the file to be sure that
|
||||
it worked.
|
||||
|
||||
|
||||
EXTENDING THE COMMAND SET
|
||||
-------------------------
|
||||
|
||||
There are many, many more EMACS commands than could possibly be put
|
||||
on all the control and meta characters. EMACS gets around this with
|
||||
the X (eXtend) command. This comes in two flavors:
|
||||
|
||||
C-X Character eXtend. Followed by one character.
|
||||
M-X Named command eXtend. Followed by a long name.
|
||||
|
||||
These are commands that are generally useful but used less than the
|
||||
commands you have already learned about. You have already seen two
|
||||
of them: the file commands C-X C-V to Visit and C-X C-S to Save.
|
||||
Another example is the command to tell EMACS that you'd
|
||||
like to stop editing. The command to do this is C-X C-Z.{+Twenex: Think of
|
||||
it as Z for zapping yourself.}
|
||||
|
||||
There are many C-X commands. The ones you need immediately are:
|
||||
|
||||
C-X C-V Visit file.
|
||||
C-X C-S Save file.
|
||||
C-X C-Z Quit EMACS. This does NOT save your file. The
|
||||
standard way to save and exit is C-X C-S C-X C-Z.
|
||||
|
||||
Named eXtended commands are commands which are used even less
|
||||
frequently, or commands which are used only in certain modes. These
|
||||
commands are usually called "functions". An example is the function
|
||||
Replace String, which globally replaces one string with another. When
|
||||
you type M-X, EMACS prompts you at the bottom of the screen with
|
||||
M-X and you should type the name of the function you wish to call; in
|
||||
this case, "Replace String". Just type "REP<Alt>" and EMACS will
|
||||
complete the name. Then you type the string that you want to replace,
|
||||
an <Alt>, the string you want to replace it with, and a return.
|
||||
When the <Alt> is echoed, it looks like this:
|
||||
|
||||
>> Move the cursor to the blank line two lines below this one.
|
||||
Then type M-X rep<Alt>changed<Alt>altered<Return>.
|
||||
|
||||
Notice how this line has changed: you've replaced
|
||||
the word c-h-a-n-g-e-d with "altered" wherever it occurs
|
||||
after the cursor.
|
||||
|
||||
|
||||
MODE LINE
|
||||
---------
|
||||
|
||||
If EMACS sees that you are typing commands slowly it shows them to you
|
||||
at the bottom of the screen in an area called the echo area. The echo
|
||||
area contains the bottom three lines of the screen. The line
|
||||
immediately above them is called the MODE LINE. The mode line says
|
||||
something like
|
||||
|
||||
EMACS (Fundamental) Main: filename --nn%-- *
|
||||
|
||||
This is a very useful "information" line.
|
||||
|
||||
You already know what the filename means -- it is the file you have
|
||||
visited. What the --nn%-- means is that nn percent of the file is
|
||||
above the top of the screen. If the top of the file is on the screen,
|
||||
it will say --TOP-- instead of --00%--. If the bottom of the file is
|
||||
on the screen, it will say --BOT--. If you are looking at a file so
|
||||
small it all fits on the screen, the --nn%-- will simply not be there.
|
||||
|
||||
The star means that you have made changes to the text. Right after
|
||||
you visit or save a file, there is no star.
|
||||
|
||||
The part of the mode line inside the parentheses is to tell you what
|
||||
modes you are in. The default mode is Fundamental which is what you
|
||||
are in now. It is an example of a "major mode". There are several
|
||||
major modes in EMACS for editing different languages and text, such as
|
||||
LISP mode, Text mode, etc. At any time one and only one major mode is
|
||||
active, and its name can always be found in the mode line just where
|
||||
"Fundamental" is now. Each major mode makes a few commands behave
|
||||
differently. For example, there are commands for creating comments in
|
||||
a program, and since each programming language has a different idea of
|
||||
what a comment should look like, each major mode has to insert
|
||||
comments differently. Each major mode is the name of an extended
|
||||
command, which is how you get into the mode. For example,
|
||||
M-X Fundamental Mode is how to get into Fundamental mode.
|
||||
|
||||
If you are going to be editing English text, such as this file, you
|
||||
should probably use Text Mode.
|
||||
>> Type M-X Text Mode<Return>.
|
||||
|
||||
Don't worry, none of the commands you have learned changes EMACS in
|
||||
any great way. But you can now observe that periods are no longer
|
||||
part of words when you do M-F or M-B! Major modes are usually like
|
||||
that: commands don't change into completely unrelated things, but they
|
||||
work a little bit differently.
|
||||
|
||||
Major modes are called major because there are also minor modes.
|
||||
They are called minor because they aren't alternatives to the major
|
||||
modes, just minor modifications of them. Each minor mode can be
|
||||
turned on or off by itself, regardless of what major mode you are in,
|
||||
and regardless of the other minor modes. So you can use no minor
|
||||
modes, or one minor mode, or any combination of several minor modes.
|
||||
|
||||
One minor mode which is very useful, especially for editing English
|
||||
text, is Auto Fill mode. When this mode is on, EMACS breaks the line
|
||||
in between words automatically whenever the line gets too long. You
|
||||
can turn this mode on by doing M-X Auto Fill Mode<Return>. When the
|
||||
mode is on, you can turn it off by doing M-X Auto Fill Mode<Return>.
|
||||
If the mode is off, this function turns it on, and if the mode is on,
|
||||
this function turns it off. This is called "toggling".
|
||||
|
||||
>> Type M-X Auto Fill Mode<Return> now. Then insert a line of "asdf "
|
||||
over again until you see it divide into two lines. You must put in
|
||||
spaces between them because Auto Fill breaks lines only at spaces.
|
||||
Notice that "Fill" appears in the mode line in addition to the name
|
||||
of the major mode, not instead of it.
|
||||
|
||||
The margin is usually set at 70 characters, but you can change it
|
||||
with the C-X F command. You should give the margin setting you want
|
||||
as a numeric argument.
|
||||
|
||||
>> Type C-X F with an argument of 20. (C-U 2 0 C-X F).
|
||||
Then type in some text and see EMACS fill lines of 20
|
||||
characters with it. Then set the margin back to 70 using
|
||||
C-X F again.
|
||||
|
||||
|
||||
RECURSIVE EDITING LEVELS
|
||||
------------------------
|
||||
|
||||
Sometimes you will get into what is called a "recursive editing
|
||||
level". This is a command which, as part of its job, wants you to
|
||||
edit some text. A good example is M-X Edit Options<Return>, which
|
||||
shows you a list of many variables called options, and their values.
|
||||
You can edit this list to change the values and thus turn the optional
|
||||
features they control on or off. When you are done, you can say "ok"
|
||||
with the command C-M-Z. If you do not have a META or EDIT key on your
|
||||
terminal, type C-Z C-Z or <Alt>C-Z. This is called "exiting" the
|
||||
recursive editing level. The text (the list of options) will
|
||||
disappear and the changes you have made will be digested.
|
||||
|
||||
>> Type M-X Edit Options<Return> and see the list of options.
|
||||
Find the option "Auto Fill Mode" and edit the value to be 1.
|
||||
Now exit with C-Z C-Z and see that "Fill" is now present in the
|
||||
mode line, and auto-filling is in effect.
|
||||
Do M-X Edit Options<Return> again and set the value of the
|
||||
option to 0, and exit. "Fill" will disappear from the mode line
|
||||
and auto-filling will no longer be in effect.
|
||||
|
||||
If you change your mind about the changes you have made inside the
|
||||
recursive editing level, you can "abort" instead of "exit" by typing
|
||||
the C-] command. When you abort, the changes you have made will NOT
|
||||
take effect.
|
||||
|
||||
>> Type M-X Edit Options<Return>. Set the value of Auto Fill Mode to
|
||||
1 again, but instead of exiting, abort with C-].
|
||||
Say "Y" when it asks you whether you mean it. You will see that
|
||||
"Fill" is not there in the mode line, because by aborting you said
|
||||
that your change to the value of the option should be ignored.
|
||||
Do M-X Edit options<Return> again. You will see that the value of
|
||||
Auto Fill Mode is still 0.
|
||||
|
||||
You can't use C-G to get out of a recursive editing level because C-G
|
||||
is used for discarding numeric arguments and partially typed commands
|
||||
WITHIN the recursive editing level.
|
||||
|
||||
|
||||
SEARCHING
|
||||
---------
|
||||
|
||||
EMACS can do searches for strings (these are groups of contiguous
|
||||
characters or words) either forward through the file or backward
|
||||
through it. To search for the string means that you are trying to
|
||||
locate it somewhere in the file and have EMACS show you where the
|
||||
occurrences of the string exist. This type of search is somewhat
|
||||
different from what you may be familiar with. It is a search that is
|
||||
performed as you type in the thing to search for. The command to
|
||||
initiate a search is C-S for forward search, and C-R for reverse
|
||||
search. BUT WAIT! Don't do them now. When you type C-S you'll
|
||||
notice that the string "I-search" appears as a prompt in the echo
|
||||
area. This tells you that EMACS is in what is called an incremental
|
||||
search waiting for you to type the thing that you want to search for.
|
||||
<ALT> terminates a search.
|
||||
|
||||
>> Now type C-S to start a search. SLOWLY, one letter at a time,
|
||||
type the word 'cursor', pausing after you type each
|
||||
character to notice what happens to the cursor.
|
||||
>> Type C-S to find the next occurrence of "cursor".
|
||||
>> Now type <Rubout> four times and see how the cursor moves.
|
||||
>> Type <Alt> to terminate the search.
|
||||
|
||||
Did you see what happened? EMACS, in an incremental search, tries to
|
||||
go to the occurrence of the string that you've typed out so far. To go
|
||||
to the next occurrence of 'cursor' just type C-S again. If no such
|
||||
occurrence exists EMACS beeps and tells you that it is a failing
|
||||
search. C-G would also terminate the search.
|
||||
|
||||
If you are in the middle of an incremental search and type <Rubout>,
|
||||
you'll notice that the last character in the search string is erased
|
||||
and the search backs up to the last place of the search. For
|
||||
instance, suppose you currently have typed 'cu' and you see that your
|
||||
cursor is at the first occurrence of 'cu'. If you now type <Rubout>,
|
||||
the 'u' on the search line is erased and you'll be repositioned in the
|
||||
text to the occurrence of 'c' where the search took you before you
|
||||
typed the 'u'. This provides a useful means for backing up while you
|
||||
are searching.
|
||||
|
||||
If you are in the middle of a search and happen to type a control
|
||||
character (other than a C-S or C-R, which tell EMACS to search for the
|
||||
next occurrence of the string), the search is terminated.
|
||||
|
||||
The C-S starts a search that looks for any occurrence of the search
|
||||
string AFTER the current cursor position. But what if you want to
|
||||
search for something earlier in the text? To do this, type C-R for
|
||||
Reverse search. Everything that applies to C-S applies to C-R except
|
||||
that the direction of the search is reversed.
|
||||
|
||||
|
||||
GETTING MORE HELP
|
||||
-----------------
|
||||
|
||||
In this tutorial we have tried to supply just enough information to
|
||||
get you started using EMACS. There is so much available in EMACS that
|
||||
it would be impossible to explain it all here. However, you may want
|
||||
to learn more about EMACS since it has numerous desirable features
|
||||
that you don't know about yet. EMACS has a great deal of internal
|
||||
documentation. All of these commands can be accessed through the HELP
|
||||
character. {+ITS:On a TV terminal, the word "HELP" should appear on
|
||||
the H key. Type the Help character by holding down TOP and typing H.}
|
||||
If there is no key labelled "HELP" on your keyboard, you can type the
|
||||
<HELP> character as {+ITS:C-_ H (two keystrokes, a Control-Underscore
|
||||
and an H).}{+Twenex:C-M-? (Control-Meta-Question Mark = C-Z ?), or
|
||||
with the <HOLD> key, on Datamedia terminals.} Be warned: many
|
||||
terminals are faulty and do not allow you to type the character C-_ in
|
||||
the logical way (hold down Control and type an underscore). For
|
||||
example, on a VT-100 it works to hold down Control and type "/" or
|
||||
"?"; on a hazeltine you have to type Control-Shift-O ! {*Refill:}
|
||||
|
||||
To use the HELP features, type the <HELP> character, and then a
|
||||
character saying what kind of help you want. If you are REALLY lost,
|
||||
type <HELP> ? and EMACS will tell you what kinds of help it can give.
|
||||
If you have typed the <HELP> character and decide you don't want any
|
||||
help, just type C-G to abort.{*Refill:}
|
||||
|
||||
The most basic HELP feature is <HELP> C. Type <HELP>, a C, and a
|
||||
command character, and EMACS prints a description of the command.
|
||||
When you are finished reading it, type a Space or a C-G (quit) to
|
||||
bring your text back on the screen.
|
||||
|
||||
>> Type <HELP> C Control-P. When you are finished reading the output,
|
||||
type a Space. The message should be something like
|
||||
|
||||
The command Control-P runs the function ^R Up Real Line:
|
||||
Move up vertically to the next real line.
|
||||
Continuation lines are skipped.
|
||||
|
||||
The "name of the function" is important for people who are customizing
|
||||
EMACS. It is what appears in the EMACS CHART as the documentation for
|
||||
the command character. It often starts with the characters "^R". For
|
||||
now you can ignore it.
|
||||
|
||||
Multi-character commands such as C-X C-Z and (if you have no META or
|
||||
EDIT key) <ALT>V are also allowed after <HELP> C.
|
||||
|
||||
Here are some other useful <HELP> options:
|
||||
|
||||
<HELP> D Describe a function. You type in the name of the
|
||||
function. To see your text again when it is done,
|
||||
type a Space or C-G.
|
||||
|
||||
>> Try typing <HELP> D Replace String<Return>. Then type a Space
|
||||
when you are finished reading it.
|
||||
|
||||
<HELP> A Apropos. Type in a keyword and EMACS will list
|
||||
all the functions containing that keyword. For some
|
||||
functions it will also list a one or two character
|
||||
command which has the same effect.
|
||||
|
||||
>> Type <HELP> A File<Return>. You will see a list of all functions
|
||||
(M-X commands) with "file" in their names. You will also see commands
|
||||
like C-X C-V and C-X C-S, listed under the corresponding function
|
||||
names. When it says "--More--" at the bottom of the screen, type
|
||||
a Space to see the rest of the list.
|
||||
|
||||
<HELP> I Run the INFO program. INFO contains the same
|
||||
information as in the EMACS manual, as well as
|
||||
documentation of some other system programs,
|
||||
organized by topic. Here is where you can find
|
||||
out about, for instance, special commands for
|
||||
editing LISP code, handling buffers, replacing
|
||||
text, filling and justifying text, etc.
|
||||
|
||||
INFO is a fairly sophisticated documentation finder which is what you
|
||||
will have to use to learn more about EMACS. After you are familiar
|
||||
with the material in this tutorial, you should try invoking INFO with
|
||||
<HELP> I and then, as soon as you are in INFO, type H. The H will get
|
||||
you INFO's tutorial, which will teach you how to use INFO just as this
|
||||
has taught you how to use EMACS.
|
||||
|
||||
|
||||
CONCLUSION
|
||||
----------
|
||||
|
||||
Remember, to exit use C-M-Z (C-Z C-Z). You will not be screwed if you
|
||||
exit with C-{+ITS:Z}{+Twenex:C} but various features will not be
|
||||
provided, so it is probably wise to develop the habit of using
|
||||
C-M-Z.{*Refill:}
|
||||
|
||||
This tutorial is meant to be understandable to all new users, so if
|
||||
you found something unclear, don't sit and blame yourself - complain!
|
||||
96
src/emacs/teach.emacs
Executable file
96
src/emacs/teach.emacs
Executable file
@@ -0,0 +1,96 @@
|
||||
!* -*-TECO-*- *!
|
||||
|
||||
!* This is the EMACS init for TEACH-EMACS.
|
||||
It visits the teaching file and dumps out the
|
||||
runnable EMACS tutorial program.!
|
||||
|
||||
!* Create startup macro to be run when we're 'd.!
|
||||
@:i*| :i..9 f[bbind
|
||||
fs rgetty"e
|
||||
!"! ftUnfortunately, the EMACS tutorial cannot be used on a printing
|
||||
terminal. Your terminal is a printing terminal, or at least that
|
||||
is what the system believes. If you have access to a CRT terminal,
|
||||
try this program again from there. If your terminal really is a CRT
|
||||
but the system doesn't know it,
|
||||
fs osteco"n !"! ft
|
||||
you should use the EXEC command Terminal Type to tell it, and try again.
|
||||
If the system doesn't know about your type of terminal but EMACS does,
|
||||
you should use the EXEC commands Terminal Length and Terminal Width to
|
||||
tell the system the size of your screen, try again, and when the tutorial
|
||||
gets to this point that time, type the EMACS codename for the terminal.
|
||||
|
||||
< 1:< @m(m.mSet Terminal Type) >;
|
||||
!"! ft
|
||||
Sorry, that isn't a known terminal type. Here are the known types:
|
||||
|
||||
m(m.mList Library)TRMTYP
|
||||
!"! ft
|
||||
ft
|
||||
You don't type the "# TRMTYP ". For example, if you are on a
|
||||
Datamedia Elite 2500, type "DM2500".
|
||||
ft
|
||||
Try again now.
|
||||
ft
|
||||
!''''!
|
||||
>
|
||||
fs rgetty"e !"! ft
|
||||
It looks like your terminal really can't do the job. Sorry.
|
||||
fsexit'
|
||||
f+'
|
||||
fs osteco"e ft
|
||||
you should try telling the system, and try again.
|
||||
For information on display terminals supported by ITS, do :TCTYP ?<cr>,
|
||||
or look in INFO;CRTSTY > for info on indirectly supported terminals.
|
||||
140000.FS EXIT''
|
||||
fs osteco"n er <emacs>emacs.init @y'
|
||||
"# er emacs;* emacs @y'
|
||||
m(hfx*(i )) f]bbind
|
||||
fsosteco"e etdsk:teach text'
|
||||
"# etdsk:teach-emacs.tutorial'
|
||||
fshsnamefsdsnamew fsdfileu0 !* Compute desired visited file!
|
||||
q0uBuffer Filenames !* Put that name in right places.!
|
||||
q0u:.b(qBuffer Index+2)
|
||||
m(m.m & Set Mode Line)
|
||||
jsblank lines inserted here !* grow text to fit screen size.!
|
||||
0l:k fsheight-24< i
|
||||
> j
|
||||
!* On non-meta keyboards, allow Alt 1 2 to mean an arg of 12.!
|
||||
FS %TOFCI"E
|
||||
M.M ^R Autoarg[0 460.-1[1
|
||||
10< %1W Q0U1> Q0U..-
|
||||
]1 ]0'
|
||||
0fsmodif
|
||||
0u..h :m..l
|
||||
F+
|
||||
| m.vMM & Startup EMACS
|
||||
|
||||
m(m.mLoad Lib)Docond
|
||||
0fsmodified
|
||||
0u*Initialization* !* Make this work if run in a just-built EMACS.!
|
||||
|
||||
fsosteco"e
|
||||
-1,m(m.m Visit File)EMACS;TEACH >
|
||||
m(m.m Fundamental Mode)
|
||||
m(m.mDocond Set Flag)+ITS'
|
||||
"#
|
||||
-1,m(m.m Visit File)<EMACS>TEACH-EMACS.TXT
|
||||
m(m.m Fundamental Mode)
|
||||
m(m.mDocond Set Flag)+Twenex'
|
||||
|
||||
!* Do the DOCONDing, inside an ^R in case we aren't already in one.!
|
||||
70[Fill Column
|
||||
@:i*| m(m.mDocond) fs^r exit|f[^r enter
|
||||
|
||||
-2fs qp unwind
|
||||
|
||||
fsosteco"e
|
||||
m(m.aPURIFYDump Environment)EMACS;TSTCH >'
|
||||
"#
|
||||
fs osteco-1"e
|
||||
m(m.aPURIFYDump Environment)<EMACS>TEACH-EMACS.EXE'
|
||||
"# m(m.aPURIFYDump Environment)<EMACS>TEACH-EMACS.SAV''
|
||||
|
||||
FTEMACS tutorial dumped.
|
||||
|
||||
160000. fs exit
|
||||
|
||||
BIN
src/emacs1/docond.21
Executable file
BIN
src/emacs1/docond.21
Executable file
Binary file not shown.
218
src/emacs1/trmtyp.39
Executable file
218
src/emacs1/trmtyp.39
Executable file
@@ -0,0 +1,218 @@
|
||||
!*-*-TECO-*-*!
|
||||
!~Filename~:! !Specify terminal type for EMACS.!
|
||||
TRMTYP
|
||||
|
||||
!& Set Terminal Type:! !C Specify terminal type (as string argument).
|
||||
To get a list of all terminal types, do M-X List LibraryTRMTYP<cr>.!
|
||||
|
||||
1,fTerminal_Type:_[1
|
||||
1,m.m#_TRMTYP_1[2
|
||||
q2"e :i*1__Unknown_terminal_type_name fs err'
|
||||
m2fstty initw fsWindow(f+)fsWindoww
|
||||
|
||||
|
||||
!Init File Set Terminal Type:! !C Give Emacs a terminal type.
|
||||
|
||||
The system does not know your terminal type.
|
||||
EMACS may be able to handle your terminal if you tell
|
||||
EMACS what type of terminal it is.
|
||||
Type the EMACS name for your terminal type now.
|
||||
To see a list of EMACS terminal type names, type ?<CR>.
|
||||
To continue with EMACS in printing terminal mode, type just <CR>.!
|
||||
|
||||
< 1,fTerminal_Type:_[1 !* Return here on errors!
|
||||
fq1"e 0'
|
||||
f=1 ?"e !* ? => list types.!
|
||||
m(m.m list_Library)TRMTYP
|
||||
!<!>'
|
||||
1,m.m#_TRMTYP_1[2 !* Then get it (if it exists)!
|
||||
q2:@; !* Exit loop if type is valid.!
|
||||
:i*1__Unknown_terminal_type_name fg>
|
||||
m2fstty initw
|
||||
f[Window f+
|
||||
|
||||
fs height-24"n
|
||||
ft Your_terminal_height_may_cause_problems
|
||||
'
|
||||
fs width-79"n
|
||||
ft Your_terminal_width_may_cause_problems
|
||||
'
|
||||
|
||||
|
||||
|
||||
!# TRMTYP Printing:! !S Printing terminal!
|
||||
0
|
||||
|
||||
!# TRMTYP Glass:! !S Stupid display terminal!
|
||||
1
|
||||
|
||||
!# TRMTYP DM2500:! !S Datamedia Elite 2500!
|
||||
2
|
||||
|
||||
!# TRMTYP H1500:! !S Hazeltine 1500!
|
||||
3
|
||||
|
||||
!# TRMTYP VT52:! !S VT52!
|
||||
4
|
||||
|
||||
!# TRMTYP DM1520:! !S Datamedia Elite 1520!
|
||||
5
|
||||
|
||||
!# TRMTYP Imlac:! !S MIT Imlac!
|
||||
6
|
||||
|
||||
!# TRMTYP VT05:! !S DEC VT05!
|
||||
7
|
||||
|
||||
!# TRMTYP TK4025:! !S Tektronix 4025!
|
||||
8
|
||||
|
||||
!# TRMTYP VT61:! !S VT61!
|
||||
9
|
||||
|
||||
!# TRMTYP TL4041:! !S Teleray 4041!
|
||||
10
|
||||
|
||||
!# TRMTYP Fox:! !S Perkin-Elmer Fox!
|
||||
11
|
||||
|
||||
!# TRMTYP HP2645:! !S Hewlett-Packard 2645!
|
||||
12
|
||||
|
||||
!# TRMTYP I400:! !S Infoton 400!
|
||||
13
|
||||
|
||||
!# TRMTYP TK4023:! !S Tektronix 4023!
|
||||
14
|
||||
|
||||
!# TRMTYP Ann Arbor:! !S Ann Arbor!
|
||||
15
|
||||
|
||||
!# TRMTYP C100:! !S HDS Concept-100!
|
||||
16
|
||||
|
||||
!# TRMTYP IQ120:! !S Soroc IQ 120!
|
||||
17
|
||||
|
||||
!# TRMTYP VT100:! !S VT100 in ANSI mode!
|
||||
18
|
||||
|
||||
!# TRMTYP I100:! !S Infoton 100!
|
||||
19
|
||||
|
||||
!# TRMTYP TL1061:! !S Teleray 1061!
|
||||
20
|
||||
|
||||
!# TRMTYP HEATH:! !S Heathkit!
|
||||
21
|
||||
|
||||
!# TRMTYP VC404:! !S Volker-Craig 404!
|
||||
22
|
||||
|
||||
!# TRMTYP CN-CP:! !S CN-CP losing terminal!
|
||||
23
|
||||
|
||||
!# TRMTYP TVI912:! !S Televideo 912!
|
||||
24
|
||||
|
||||
!# TRMTYP Owl:! !S Perkin-Elmer Owl!
|
||||
25
|
||||
|
||||
!# TRMTYP Bantam:! !S Perkin-Elmer Bantam!
|
||||
26
|
||||
|
||||
!# TRMTYP DM3045:! !S Datamedia 3045!
|
||||
27
|
||||
|
||||
!# TRMTYP DM3052:! !S Datamedia 3052!
|
||||
28
|
||||
|
||||
!# TRMTYP HMOD1:! !S Hazeltine Modular-1!
|
||||
29
|
||||
|
||||
!# TRMTYP H1510:! !S Hazeltine 1510!
|
||||
30
|
||||
|
||||
!# TRMTYP ADM3A:! !S ADM3A!
|
||||
31
|
||||
|
||||
!# TRMTYP VT100V:! !S VT100 in VT52 mode (80 columns, max)!
|
||||
32
|
||||
|
||||
!# TRMTYP SImlac:! !S Simulated imlac!
|
||||
33
|
||||
|
||||
!# TRMTYP VT100W:! !S VT100 in VT52 mode outside, ANSI mode inside!
|
||||
34
|
||||
|
||||
!# TRMTYP VT100X:! !S VT100, ANSI mode outside, VT52 inside (80 col max)!
|
||||
35
|
||||
|
||||
!# TRMTYP ADM42:! !S ADM 42 (also good for ADM 31)!
|
||||
36
|
||||
|
||||
!# TRMTYP NIH5200:! !S NIH5200 (modified Delta Data)!
|
||||
37
|
||||
|
||||
!# TRMTYP V200:! !S Visual 200!
|
||||
38
|
||||
|
||||
!# TRMTYP PTV:! !S MIT TV system (emulates large-screen VT52).!
|
||||
39
|
||||
|
||||
!# TRMTYP E19:! !S Edmonds's modified H19!
|
||||
40
|
||||
|
||||
!# TRMTYP VTS:! !S MIT virtual display terminal (system does conversion).!
|
||||
41
|
||||
|
||||
!# TRMTYP ACT4:! !S ACT-IV terminal.!
|
||||
42
|
||||
|
||||
!# TRMTYP IM3101:! !S IBM 3101 terminal.!
|
||||
43
|
||||
|
||||
!# TRMTYP GILL:! !S Gill's modified Hazeltine.!
|
||||
44
|
||||
|
||||
!# TRMTYP DM3025:! !S Datamedia 3025.!
|
||||
45
|
||||
|
||||
!# TRMTYP Ambassador:! !S Ann Arbor Ambassador.!
|
||||
46
|
||||
|
||||
!# TRMTYP Mime52:! !S Mime2a in enhanced VT52 emulation mode.!
|
||||
47
|
||||
|
||||
!# TRMTYP DG132:! !S Datagraphics 132.!
|
||||
48
|
||||
|
||||
!# TRMTYP IIMLAC:! !S Imlac with %TOFCI using intelligent terminal protocol.!
|
||||
49
|
||||
|
||||
!# TRMTYP BUR80:! !S Cal-Tech modified Burroughs TD850.!
|
||||
50
|
||||
|
||||
!# TRMTYP INTEXT:! !S Intext terminal (supposedly modified OWL, but nothing like one).!
|
||||
51
|
||||
|
||||
!# TRMTYP VT132:! !S DEC VT132.!
|
||||
52
|
||||
|
||||
!# TRMTYP Viewpoint:! !S Adds Viewpoint !
|
||||
53
|
||||
|
||||
!# TRMTYP NIH7000:! !NIH 7000 (modified Delta Data)!
|
||||
54
|
||||
|
||||
!# TRMTYP BEE2:! !Microbee 2!
|
||||
55
|
||||
|
||||
!# TRMTYP GIGI:! !DEC GIGI graphics terminal (garbage is garbage inevitably)!
|
||||
56
|
||||
|
||||
!# TRMTYP TVI950:! !TeleVideo 950 Smarter than a 912 (no padding needed)!
|
||||
57
|
||||
|
||||
!# TRMTYP BBN Bitgraph:! !BBN's bitmapped terminal!
|
||||
58
|
||||
Reference in New Issue
Block a user