Annotation of 43BSDReno/share/doc/usd/17.jove/jove.1, revision 1.1.1.1

1.1       root        1: .\"    @(#)jove.1      6.1 (Berkeley) 5/30/86
                      2: .\"
                      3: .\" ditroff -ms
                      4: .de IQ
                      5: \\fI\\$1\\fP
                      6: ..
                      7: .de dc
                      8: .NH 2
                      9: \\$1
                     10: .if '\\$2'(variable)' (variable)
                     11: .if !'\\$2'(variable)' (\\$2)
                     12: .LP
                     13: ..
                     14: .nr LL 6.5i
                     15: .nr LT 6.5i
                     16: .EH 'USD:17-%''JOVE Manual for UNIX Users'
                     17: .OH 'JOVE Manual for UNIX Users''USD:17-%'
                     18: .LP
                     19: .TL
                     20: JOVE Manual for UNIX Users
                     21: .AU
                     22: Jonathan Payne
                     23: (revised for 4.3BSD by Doug Kingston and Mark Seiden)
                     24: .AI
                     25: .AB no
                     26: .AE
                     27: .NH 1
                     28: Introduction
                     29: .XS \n(PN
                     30: \*(SN Introduction
                     31: .XE
                     32: .LP
                     33: \s-2JOVE\s0*
                     34: .FS
                     35: *\s-2JOVE\s0 stands for Jonathan's Own Version of Emacs.
                     36: .FE
                     37: is an advanced, self-documenting, customizable real-time display editor.
                     38: It (and this tutorial introduction) are based on the original EMACS editor and user 
                     39: manual written at M.I.T. by Richard Stallman+.
                     40: .FS
                     41: +Although \s-2JOVE\s0 is meant to be compatible with EMACS,
                     42: and indeed many of the basic commands are very similar,
                     43: there are some major differences between the two editors,
                     44: and you should not rely on their behaving identically.
                     45: .FE
                     46: .LP
                     47: \s-2JOVE\s0 is considered a
                     48: .I display 
                     49: editor because normally the text being
                     50: edited is visible on the screen and is updated automatically as you
                     51: type your commands.
                     52: .LP
                     53: It's considered a
                     54: .I real-time 
                     55: editor because the display is updated very
                     56: frequently, usually after each character or pair of characters you type.
                     57: This minimizes the amount of information you must keep in your
                     58: head as you edit.
                     59: .LP
                     60: \s-2JOVE\s0 is 
                     61: .I advanced 
                     62: because it provides facilities that go beyond
                     63: simple insertion and deletion:
                     64: filling of text;
                     65: automatic indentations of programs;
                     66: view more than one file at once;
                     67: and dealing in terms of characters, words, lines, sentences and paragraphs.
                     68: It is much easier
                     69: to type one command meaning "go to the end of the paragraph" than to
                     70: find the desired spot with repetition of simpler commands.
                     71: .LP
                     72: .I Self-documenting 
                     73: means that at almost any time you can easily
                     74: find out what a command does,
                     75: or to find all the commands that pertain to a topic.
                     76: .LP
                     77: .I Customizable
                     78: means that you can change the definition of \s-2JOVE\s0 commands
                     79: in little ways.
                     80: For example, you can rearrange the command set;
                     81: if you prefer to use arrow keys for the four basic cursor motion commands
                     82: (up, down, left and right), you can.
                     83: Another sort of customization is
                     84: writing new commands by combining built in commands.
                     85: .NH 1
                     86: The Organization of the Screen
                     87: .XS \n(PN
                     88: \*(SN The Organization of the Screen
                     89: .XE
                     90: .LP
                     91: \s-2JOVE\s0 divides the screen up into several sections.
                     92: The biggest of these sections is used to display the text you are editing.
                     93: The terminal's cursor shows the position of \fIpoint\fP,
                     94: the location at which editing takes place.
                     95: While the cursor appears to point \fIat\fP a character,
                     96: point should be thought of as between characters;
                     97: it points \fIbefore\fP the character that the cursor appears on top of.
                     98: Terminals have only one cursor,
                     99: and when output is in progress it must appear where the typing is being done.
                    100: This doesn't mean that point is moving;
                    101: it is only that \s-2JOVE\s0 has no way of
                    102: showing you the location of point except when the terminal is idle.
                    103: .LP
                    104: The lines of the screen are usually available for displaying text but
                    105: sometimes are pre-empted by typeout from certain commands (such as a
                    106: listing of all the editor commands).
                    107: Most of the time,
                    108: output from commands like these is only desired for a short period of time,
                    109: usually just long enough to glance at it.
                    110: When you have finished looking at the output,
                    111: you can type Space to make your text reappear.
                    112: (Usually a Space that you type inserts itself, but when there is typeout on
                    113: the screen, it does nothing but get rid of that).
                    114: Any other command executes normally,
                    115: .I after
                    116: redrawing your text.
                    117: .NH 2
                    118: The Message Line
                    119: .XS \n(PN 5n
                    120: \*(SN The Message Line
                    121: .XE
                    122: .LP
                    123: The bottom line on the screen, called the
                    124: \fImessage line\fP,
                    125: is reserved for printing messages and for accepting input from the user,
                    126: such as filenames or search strings.
                    127: When
                    128: \s-2JOVE\s0 
                    129: prompts for input,
                    130: the cursor will temporarily appear on the bottom line, waiting for you
                    131: to type a string.
                    132: When you have finished typing your input, you can
                    133: type a Return to send it to \s-2JOVE\s0.
                    134: If you change your mind about running the command that is waiting for input,
                    135: you can type Control-G to abort,
                    136: and you can continue with your editing.
                    137: .LP
                    138: When \s-2JOVE\s0 is prompting for a filename,
                    139: all the usual editing facilities can be used to fix typos and such;
                    140: in addition, \s-2JOVE\s0 has the following extra functions:
                    141: .IP "^N"
                    142: Insert the next filename from the argument list.
                    143: .IP "^P"
                    144: Insert the previous filename from the argument list.
                    145: .IP "^R"
                    146: Insert the full pathname of the file in the current buffer.
                    147: .LP
                    148: Sometimes you will see \fB--more--\fP on the message line.
                    149: This happens when typeout from a command is too long to fit in the screen.
                    150: It means that if you type a Space the next screenful of typeout will be
                    151: printed.
                    152: If you are not interested,
                    153: typing anything but a Space will cause the rest of the output to be discarded.
                    154: Typing C-G will discard the output and print \fIAborted\fP where the \fB--more--\fP was.
                    155: Typing any other command will discard the rest of the output and
                    156: also execute the command.
                    157: .LP
                    158: The message line and the list of filenames from the shell command that
                    159: invoked \s-2JOVE\s0 are kept in a special buffer called
                    160: \fIMinibuf\fP that can be edited like any other buffer.
                    161: .NH 2
                    162: The Mode Line
                    163: .XS \n(PN 5n
                    164: \*(SN The Mode Line
                    165: .XE
                    166: .LP
                    167: At the bottom of the screen, but above the message line, is the
                    168: \fImode line\fP.  The mode line format looks like this:
                    169: .DS I
                    170: \fBJOVE (major minor)   Buffer: bufr  "file" *\fP
                    171: .DE
                    172: \fImajor\fP is the name of the current \fImajor mode\fP.
                    173: At any time, \s-2JOVE\s0 can be in only one major mode at a time.
                    174: Currently there are only four major modes: \fIFundamental\fP,
                    175: \fIText\fP, \fILisp\fP and \fIC\fP.
                    176: .LP
                    177: \fIminor\fP is a list of the minor modes that are turned on.
                    178: \fBAbbrev\fP means that \fIWord Abbrev\fP mode is on;
                    179: \fBAI\fP means that \fIAuto Indent\fP mode is on;
                    180: \fBFill\fP means that \fIAuto Fill\fP mode is on;
                    181: \fBOvrWt\fP means that \fIOver Write\fP mode is on.
                    182: \fBDef\fP means that you are in the process of defining a keyboard macro.
                    183: This is not really a mode,
                    184: but it's useful to be reminded about it.
                    185: The meanings of these modes are described later in this document.
                    186: .LP
                    187: \fIbufr\fP is the name of the currently selected \fIbuffer\fP.
                    188: Each buffer has its own name and holds a file being edited;
                    189: this is how \s-2JOVE\s0 can hold several files at once.
                    190: But at any given time you are editing only one of them,
                    191: the \fIselected\fP buffer.
                    192: When we speak of what some command does to "the buffer",
                    193: we are talking about the currently selected buffer.
                    194: Multiple buffers makes it easy to switch around between several files,
                    195: and then it is very useful that
                    196: the mode line tells you which one you are editing at any time.  (You
                    197: will see later that it is possible to divide the
                    198: screen into multiple \fIwindows\fP, each showing a different buffer.  If you
                    199: do this, there is a mode line beneath each window.)
                    200: .LP
                    201: \fIfile\fP is the name of the file that you are editing.
                    202: This is the default filename for commands that expect a filename as input.
                    203: .LP
                    204: The asterisk at the end of the mode line means that there are changes in
                    205: the buffer that have not been saved in the file.
                    206: If the file has not been changed since it was read in or saved,
                    207: there is no asterisk.
                    208: .NH 1
                    209: Command Input Conventions
                    210: .XS \n(PN
                    211: \*(SN Command Input Conventions
                    212: .XE
                    213: .LP
                    214: .NH 2
                    215: Notational Conventions for ASCII Characters
                    216: .XS \n(PN 5n
                    217: \*(SN Notational Conventions for ASCII Characters
                    218: .XE
                    219: .LP
                    220: In this manual,
                    221: "Control" characters
                    222: (that is, characters that are typed with the Control key
                    223: and some other key at the same time)
                    224: are represented by "C-" followed by another character.
                    225: Thus,
                    226: C-A is the character you get when you type A with the Control key
                    227: (sometimes labeled CTRL) down.
                    228: Most control characters when present in the \s-2JOVE\s0
                    229: buffer are displayed with a caret; thus, ^A for C-A.
                    230: Rubout (or DEL) is displayed as ^?, escape as ^[.
                    231: .NH 2
                    232: Command and Filename Completion
                    233: .XS \n(PN 5n
                    234: \*(SN Command and Filename Completion
                    235: .XE
                    236: .LP
                    237: When you are typing the name of a \s-2JOVE\s0 command, you need type only
                    238: enough letters to make the name unambiguous.  At any point in the course of
                    239: typing the name, you can type question mark (?) to see a list of all the
                    240: commands whose names begin with the characters you've already typed; you can
                    241: type Space to have \s-2JOVE\s0 supply as many characters as it can; or you
                    242: can type Return to complete the command if there is only one possibility.
                    243: For example, if you have typed the letters "\fIau\fP" and you then type a
                    244: question mark, you will see the list
                    245: .DS I
                    246:    auto-execute-command
                    247:    auto-execute-macro
                    248:    auto-fill-mode
                    249:    auto-indent-mode
                    250: .DE
                    251: If you type a Return at this point, \s-2JOVE\s0 will complain by ringing
                    252: the bell, because the letters you've typed do not unambiguously specify a
                    253: single command.  But if you type Space, \s-2JOVE\s0 will supply the
                    254: characters "\fIto-\fP" because all commands that begin "\fIau\fP" also
                    255: begin "\fIauto-\fP".  You could then type the letter "\fIf\fP" followed
                    256: by either Space or Return, and \s-2JOVE\s0 would complete the entire
                    257: command.
                    258: .LP
                    259: Whenever \s-2JOVE\s0 is prompting you for a filename,
                    260: say in the \fIfind-file\fP command,
                    261: you also need only type enough of the name to make it unambiguous with
                    262: respect to files that already exist.  In this case, question mark and
                    263: Space work just as they do in command completion, but Return always
                    264: accepts the name just as you've typed it, because you might want to
                    265: create a new file with a name similar to that of an existing file.
                    266: .NH 1
                    267: Commands and Variables
                    268: .XS \n(PN
                    269: \*(SN Commands and Variables
                    270: .XE
                    271: .LP
                    272: \s-2JOVE\s0 is composed of \fIcommands\fP
                    273: which have long names such as
                    274: \fInext-line\fP.
                    275: Then \fIkeys\fP such as C-N are connected to
                    276: commands through the \fIcommand dispatch table\fP.
                    277: When we say that C-N moves the cursor down a line,
                    278: we are glossing over a distinction which is unimportant for ordinary use,
                    279: but essential for simple customization:
                    280: it is the command \fInext-line\fP which knows how to move a down line,
                    281: and C-N moves down a line because it is connected to that command.
                    282: The name for this connection is a \fIbinding\fP; we say that the key
                    283: C-N \fIis bound to\fP the command \fInext-line\fP.
                    284: .LP
                    285: Not all commands are bound to keys.  To invoke a command that isn't bound
                    286: to a key, you can type the sequence ESC X, which is bound to the command
                    287: \fIexecute-named-command\fP.  You will then be able to type the name of
                    288: whatever command you want to execute on the message line.
                    289: .LP
                    290: Sometimes the description of a command will say
                    291: "to change this, set the variable \fImumble\-foo\fP".
                    292: A variable is a name used to remember a value.
                    293: \s-2JOVE\s0 contains variables which are there so that you can change
                    294: them if you want to customize.
                    295: The variable's value is examined by some command,
                    296: and changing that value makes the command behave differently.
                    297: Until you are interesting in customizing \s-2JOVE\s0,
                    298: you can ignore this information.
                    299: .NH 2
                    300: Prefix Characters
                    301: .XS \n(PN 5n
                    302: \*(SN Prefix Characters
                    303: .XE
                    304: .LP
                    305: Because there are more command names than keys,
                    306: \s-2JOVE\s0 provides
                    307: \fIprefix characters\fP to increase the number of commands that can
                    308: be invoked quickly and easily.
                    309: When you type a prefix character \s-2JOVE\s0 will wait
                    310: for another character before deciding what to do.
                    311: If you wait more than a second or so,
                    312: \s-2JOVE\s0 will print the prefix character on the
                    313: message line as a reminder and leave the cursor down there until you type your next
                    314: character.
                    315: There are two prefix characters built into \s-2JOVE\s0:
                    316: Escape and Control-X.
                    317: How the next character is interpreted depends on which
                    318: prefix character you typed.
                    319: For example,
                    320: if you type Escape followed by B you'll run \fIbackward-word\fP,
                    321: but if you type Control-X followed by B you'll run \fIselect-buffer\fP.
                    322: Elsewhere in this manual, the Escape key is indicated as "ESC", which is
                    323: also what \s-2JOVE\s0 displays on the message line for Escape.
                    324: .NH 2
                    325: Help
                    326: .XS \n(PN
                    327: \*(SN Help
                    328: .XE
                    329: .LP
                    330: To get a list of keys and their associated commands,
                    331: you type ESC X \fIdescribe-bindings\fP.
                    332: If you want to describe a single key,
                    333: ESC X \fIdescribe-key\fP will work.  A description of an
                    334: individual command is available by using ESC X \fIdescribe-command\fP,
                    335: and descriptions of variables by using  ESC X \fIdescribe-variable\fP.
                    336: If you can't remember the name of the thing you want to know about,
                    337: ESC X \fIapropos\fP will tell you if a command or variable has a given
                    338: string in its name.  For example, ESC X \fIapropos describe\fP will
                    339: list the names of the four describe commands mentioned briefly in this
                    340: section.
                    341: .NH 1
                    342: Basic Editing Commands
                    343: .XS \n(PN
                    344: \*(SN Basic Editing Commands
                    345: .XE
                    346: .LP
                    347: .NH 2
                    348: Inserting Text
                    349: .XS \n(PN 5n
                    350: \*(SN Inserting Text
                    351: .XE
                    352: .LP
                    353: To insert printing characters into the text you are editing,
                    354: just type them.
                    355: All printing characters you type are inserted into the text at
                    356: the cursor (that is, at \fIpoint\fP),
                    357: and the cursor moves forward.
                    358: Any characters after the cursor move forward too.
                    359: If the text in the buffer is FOOBAR,
                    360: with the cursor before the B,
                    361: then if you type XX,
                    362: you get FOOXXBAR,
                    363: with the cursor still before the B.
                    364: .LP
                    365: To correct text you have just inserted,
                    366: you can use Rubout.
                    367: Rubout deletes the character \fIbefore\fP the cursor (not the one that the
                    368: cursor is on top of or under; that is the character \fIafter\fP the
                    369: cursor).
                    370: The cursor and all characters after it move backwards.
                    371: Therefore,
                    372: if you typing a printing character and then type Rubout,
                    373: they cancel out.
                    374: .LP
                    375: To end a line and start typing a new one,
                    376: type Return.
                    377: Return operates by inserting a \fIline-separator\fP,
                    378: so if you type Return in
                    379: the middle of a line,
                    380: you break the line in two.
                    381: Because a line-separator is just a single character,
                    382: you can type Rubout at the
                    383: beginning of a line to delete the line-separator and join it with the
                    384: preceding line.
                    385: .LP
                    386: As a special case, if you type Return at the end of a line and there are
                    387: two or more empty lines just below it, \s-2JOVE\s0 does not insert a
                    388: line-separator but instead merely moves to the next (empty) line.  This
                    389: behavior is convenient when you want to add several lines of text in the
                    390: middle of a buffer.  You can use the Control-O (\fInewline-and-backup\fP)
                    391: command to "open" several empty lines at once; then you can insert the new
                    392: text, filling up these empty lines.  The advantage is that \s-2JOVE\s0 does
                    393: not have to redraw the bottom part of the screen for each Return you type,
                    394: as it would ordinarily.  That "redisplay" can be both slow and distracting.
                    395: .LP
                    396: If you add too many characters to one line,
                    397: without breaking it with Return,
                    398: the line will grow too long to display on one screen line.
                    399: When this happens,
                    400: \s-2JOVE\s0 puts an "!" at the extreme right margin,
                    401: and doesn't bother to display the rest of the line unless the
                    402: cursor happens to be in it.
                    403: The "!" is not part of your text;
                    404: conversely,
                    405: even though you can't see the rest of your line,
                    406: it's still there,
                    407: and if you break the line,
                    408: the "!" will go away.
                    409: .LP
                    410: Direct insertion works for printing characters and space,
                    411: but other
                    412: characters act as editing commands and do not insert themselves.
                    413: If you need to insert a control character,
                    414: Escape,
                    415: or Rubout,
                    416: you must first \fIquote\fP it by typing the Control-Q command first.
                    417: .NH 2
                    418: Moving the Cursor
                    419: .XS \n(PN 5n
                    420: \*(SN Moving the Cursor
                    421: .XE
                    422: .LP
                    423: To do more than insert characters,
                    424: you have to know how to move the cursor.
                    425: Here are a few of the commands for doing that.
                    426: .IP "C-A" 15n
                    427: Move to the beginning of the line.
                    428: .IP "C-E" 15n
                    429: Move to the end of the line.
                    430: .IP "C-F" 15n
                    431: Move forward over one character.
                    432: .IP "C-B" 15n
                    433: Move backward over one character.
                    434: .IP "C-N" 15n
                    435: Move down one line,
                    436: vertically.
                    437: If you start in the middle of one line,
                    438: you end in the middle of the next.
                    439: .IP "C-P" 15n
                    440: Move up one line,
                    441: vertically.
                    442: .IP "ESC <" 15n
                    443: Move to the beginning of the entire buffer.
                    444: .IP "ESC >" 15n
                    445: Move to the end of the entire buffer.
                    446: .IP "ESC ," 15n
                    447: Move to the beginning of the visible window.
                    448: .IP "ESC ." 15n
                    449: Move to the end of the visible window.
                    450: .NH 2
                    451: Erasing Text
                    452: .XS \n(PN 5n
                    453: \*(SN Erasing Text
                    454: .XE
                    455: .LP
                    456: .IP "Rubout" 15n
                    457: Delete the character before the cursor.
                    458: .IP "C-D" 15n
                    459: Delete the character after the cursor.
                    460: .IP "C-K" 15n
                    461: Kill to the end of the line.
                    462: .LP
                    463: You already know about the Rubout command which deletes the character
                    464: before the cursor.
                    465: Another command,
                    466: Control-D,
                    467: deletes the character
                    468: after the cursor,
                    469: causing the rest of the text on the line to shift left.
                    470: If Control-D is typed at the end of a line,
                    471: that line and the next line are joined together.
                    472: .LP
                    473: To erase a larger amount of text,
                    474: use the Control-K command,
                    475: which kills a line at a time.
                    476: If Control-K is done at the beginning or
                    477: middle of a line,
                    478: it kills all the text up to the end of the line.
                    479: If Control-K is done at the end of a line,
                    480: it joins that line and the next line.
                    481: If Control-K is done twice, it kills the rest of the line and the line
                    482: separator also.
                    483: .NH 2
                    484: Files \(em Saving Your Work
                    485: .XS \n(PN 5n
                    486: \*(SN Files \(em Saving Your Work
                    487: .XE
                    488: .LP
                    489: The commands above are sufficient for creating text in the \s-2JOVE\s0 buffer.
                    490: The more advanced \s-2JOVE\s0 commands just make things easier.
                    491: But to keep any text permanently you must put it in a \fIfile\fP.
                    492: Files are the objects which
                    493: .UX
                    494: uses for storing data for a length of time.
                    495: To tell \s-2JOVE\s0 to read text into a file,
                    496: choose a filename,
                    497: such as \fIfoo.bar\fP,
                    498: and type C-X C-R \fIfoo.bar\fP<return>.
                    499: This reads the file \fIfoo.bar\fP so that its contents appear on the screen
                    500: for editing.
                    501: You can make changes,
                    502: and then save the file by typing C-X C-S (save-file).
                    503: This makes the changes permanent and actually changes the file \fIfoo.bar\fP.
                    504: Until then,
                    505: the changes are only inside \s-2JOVE\s0,
                    506: and the file \fIfoo.bar\fP is not really changed.
                    507: If the file \fIfoo.bar\fP doesn't exist,
                    508: and you want to create it,
                    509: read it as if it did exist.
                    510: When you save your text with C-X C-S the file will be created.
                    511: .NH 2
                    512: Exiting and Pausing \(em Leaving \s-2JOVE\s0
                    513: .XS \n(PN 5n
                    514: \*(SN Exiting and Pausing \(em Leaving \s-2JOVE\s0
                    515: .XE
                    516: .LP
                    517: The command C-X C-C (\fIexit-jove\fP) will terminate the \s-2JOVE\s0
                    518: session and return to the shell.  If there are modified but 
                    519: unsaved buffers, \s-2JOVE\s0 will ask you for confirmation, and you
                    520: can abort the command, look at what buffers are
                    521: modified but unsaved using C-X C-B (\fIlist-buffers\fP), save the 
                    522: valuable ones, and then exit.  If what you want to do, on the other hand,
                    523: is \fIpreserve\fP the editing session but return to the shell temporarily
                    524: you can (under Berkeley 
                    525: .UX
                    526: only) issue the command ESC S (\fIpause-jove\fP), do your 
                    527: .UX 
                    528: work within the c-shell, then return to \s-2JOVE\s0 using the 
                    529: \fIfg\fP command to resume editing at the point where you paused.
                    530: For this sort of situation you might consider using an \fIinteractive
                    531: shell\fP (that is, a shell in a \s-2JOVE\s0 window) which lets you use
                    532: editor commands to manipulate your 
                    533: .UX 
                    534: commands (and their output) while never leaving the editor.
                    535: (The interactive shell feature is described below.)
                    536: .NH 2
                    537: Giving Numeric Arguments to \s-2JOVE\s0 Commands
                    538: .XS \n(PN 5n
                    539: \*(SN Giving Numeric Arguments to \s-2JOVE\s0 Commands
                    540: .XE
                    541: .LP
                    542: Any \s-2JOVE\s0 command can be given a \fInumeric argument\fP.
                    543: Some commands interpret the argument as a repetition count.
                    544: For example,
                    545: giving an argument of ten to the C-F command (forward-character) moves forward
                    546: ten characters.
                    547: With these commands,
                    548: no argument is equivalent to an argument of 1.
                    549: .LP
                    550: Some commands use the value of the argument,
                    551: but do something peculiar (or nothing) when there is no argument.
                    552: For example,
                    553: ESC G (\fIgoto-line\fP) with an argument \fBn\fP
                    554: goes to the beginning of the \fBn\fP'th line.
                    555: But ESC G with no argument doesn't do anything.
                    556: Similarly, C-K with an argument kills that many lines, including their line
                    557: separators.  Without an argument, C-K when there is text on the line to the
                    558: right of
                    559: the cursor kills that text; when there is no text after the cursor, C-K
                    560: deletes the line separator.
                    561: .LP
                    562: The fundamental way of specifying an argument is to use ESC followed
                    563: by the digits of the argument, for example, ESC 123 ESC G to go to line
                    564: 123. Negative arguments are allowed,
                    565: although not all of the commands know what to do with one.
                    566: .LP
                    567: Typing C-U means do the next command four times.
                    568: Two such C-U's multiply the next command by sixteen.
                    569: Thus,
                    570: C-U C-U C-F moves forward sixteen characters.
                    571: This is a good way to move forward quickly,
                    572: since it moves about 1/4 of a line on most terminals.
                    573: Other useful combinations are:
                    574: C-U C-U C-N (move down a good fraction of the screen),
                    575: C-U C-U C-O (make "a lot" of blank lines),
                    576: and C-U C-K (kill four lines \(em note that typing C-K four times
                    577: would kill 2 lines).
                    578: .LP
                    579: There are other,
                    580: terminal-dependent ways of specifying arguments.
                    581: They have the same effect but may be easier to type.
                    582: If your terminal
                    583: has a numeric keypad which sends something recognizably different from
                    584: the ordinary digits,
                    585: it is possible to program \s-2JOVE\s0 to to allow use of
                    586: the numeric keypad for specifying arguments.
                    587: .NH 2
                    588: The Mark and the Region
                    589: .XS \n(PN 5n
                    590: \*(SN The Mark and the Region
                    591: .XE
                    592: .LP
                    593: In general,
                    594: a command that processes an arbitrary part of the buffer
                    595: must know where to start and where to stop.
                    596: In \s-2JOVE\s0,
                    597: such commands usually operate on the text between point and \fIthe mark\fP.
                    598: This body of text is called \fIthe region\fP.
                    599: To specify a region,
                    600: you set point to one end of it and mark at the other.
                    601: It doesn't matter which one comes earlier in the text.
                    602: .IP "C-@" 15n
                    603: Set the mark where point is.
                    604: .IP "C-X C-X" 15n
                    605: Interchange mark and point.
                    606: .LP
                    607: For example,
                    608: if you wish to convert part of the buffer to all upper-case,
                    609: you can use the C-X C-U command,
                    610: which operates on the text in the region.
                    611: You can first go to the beginning of the text to be capitalized,
                    612: put the mark there, move to the end, and then type C-X C-U.
                    613: Or,
                    614: you can set the mark at the end of the text,
                    615: move to the beginning,
                    616: and then type C-X C-U.
                    617: C-X C-U runs the command \fIcase-region-upper\fP,
                    618: whose name signifies that the region,
                    619: or everything between point and mark,
                    620: is to be capitalized.
                    621: .LP
                    622: The way to set the mark is with the C-@ command or (on some
                    623: terminals) the C-Space command.
                    624: They set the mark where point is.
                    625: Then you can move point away,
                    626: leaving mark behind.  When the mark is set, "[Point pushed]" is printed on
                    627: the message line.
                    628: .LP
                    629: Since terminals have only one cursor,
                    630: there is no way for \s-2JOVE\s0 to show you where the mark is located.
                    631: You have to remember.
                    632: The usual solution to this problem is to set the mark and then use it soon,
                    633: before you forget where it is.
                    634: But you can see where the mark is with
                    635: the command C-X C-X which puts the mark where point was and point
                    636: where mark was.
                    637: The extent of the region is unchanged,
                    638: but the cursor and point are now at the previous location of the mark.
                    639: .NH 2
                    640: The Ring of Marks
                    641: .XS \n(PN 5n
                    642: \*(SN The Ring of Marks
                    643: .XE
                    644: .LP
                    645: Aside from delimiting the region,
                    646: the mark is also useful for remembering a spot that you may want to go back to.
                    647: To make this feature more useful,
                    648: \s-2JOVE\s0 remembers 16 previous locations of the mark.
                    649: Most commands that set the mark push the old mark onto this stack.
                    650: To return to a marked location, use C-U C-@.
                    651: This moves point to where the mark was,
                    652: and restores the mark from the stack of former marks.
                    653: So repeated use of this command moves point to all of the old
                    654: marks on the stack,
                    655: one by one.
                    656: Since the stack is actually a ring,
                    657: enough uses of C-U C-@ bring point back to where it was originally.
                    658: .LP
                    659: Some commands whose primary purpose is to move point a great distance
                    660: take advantage of the stack of marks to give you a way to undo the
                    661: command.
                    662: The best example is ESC <,
                    663: which moves to the beginning of the buffer.
                    664: If there are more than 22 lines between the beginning of
                    665: the buffer and point,
                    666: ESC < sets the mark first,
                    667: so that you can use C-U C-@ or C-X C-X to go back to where you were.
                    668: You can change the number of lines from 22 since it is kept in the variable \fImark-threshold\fP.
                    669: By setting it to 0,
                    670: you can make these commands always set the mark.
                    671: By setting it to a very large number you can prevent these commands from ever
                    672: setting the mark.
                    673: If a command decides to set the mark,
                    674: it prints the message \fI[Point pushed]\fP.
                    675: .NH 2
                    676: Killing and Moving Text
                    677: .XS \n(PN 5n
                    678: \*(SN Killing and Moving Text
                    679: .XE
                    680: .LP
                    681: The most common way of moving or copying text with \s-2JOVE\s0 is to kill it,
                    682: and get it back again in one or more places.
                    683: This is very safe
                    684: because the last several pieces of killed text are all remembered,
                    685: and it is versatile,
                    686: because the many commands for killing syntactic units
                    687: can also be used for moving those units.
                    688: There are also other ways of moving text for special purposes.
                    689: .NH 2
                    690: Deletion and Killing
                    691: .XS \n(PN 5n
                    692: \*(SN Deletion and Killing
                    693: .XE
                    694: .LP
                    695: Most commands which erase text from the buffer save it so that you can
                    696: get it back if you change your mind,
                    697: or move or copy it to other parts of the buffer.
                    698: These commands are known as \fIkill\fP commands.
                    699: The rest of the commands that erase text do not save it;
                    700: they are known as \fIdelete\fP commands.
                    701: The delete commands include C-D and Rubout,
                    702: which delete only one character at a time,
                    703: and those commands that delete only spaces or line separators.
                    704: Commands that can destroy significant amounts of nontrivial data generally kill.
                    705: A command's
                    706: name and description will use the words \fIkill\fP or \fIdelete\fP to
                    707: say which one it does.
                    708: .IP "C-D" 20n
                    709: Delete next character.
                    710: .IP "Rubout" 20n
                    711: Delete previous character.
                    712: .IP "ESC \\\\\\\\" 20n
                    713: Delete spaces and tabs around point.
                    714: .IP "C-X C-O" 20n
                    715: Delete blank lines around the current line.
                    716: .IP "C-K" 20n
                    717: Kill rest of line or one or more lines.
                    718: .IP "C-W" 20n
                    719: Kill region (from point to the mark).
                    720: .IP "ESC D" 20n
                    721: Kill word.
                    722: .IP "ESC Rubout" 20n
                    723: Kill word backwards.
                    724: .IP "ESC K" 20n
                    725: Kill to end of sentence.
                    726: .IP "C-X Rubout" 20n
                    727: Kill to beginning of sentence.
                    728: .NH 2
                    729: Deletion
                    730: .XS \n(PN 5n
                    731: \*(SN Deletion
                    732: .XE
                    733: .LP
                    734: The most basic delete commands are C-D and Rubout.
                    735: C-D deletes the character after the cursor,
                    736: the one the cursor is "on top of" or "underneath".
                    737: The cursor doesn't move.
                    738: Rubout deletes the character before the cursor,
                    739: and moves the cursor back.
                    740: Line separators act like normal characters when deleted.
                    741: Actually,
                    742: C-D and Rubout aren't always \fIdelete\fP commands;
                    743: if you give an argument,
                    744: they \fIkill\fP instead.
                    745: This prevents you from losing a great deal of text by typing a large
                    746: argument to a C-D or Rubout.
                    747: .LP
                    748: The other delete commands are those which delete only formatting
                    749: characters:
                    750: spaces,
                    751: tabs,
                    752: and line separators.
                    753: ESC \\ (\fIdelete-white-space\fP)
                    754: deletes all the spaces and tab characters before and after point.
                    755: C-X C-O (\fIdelete-blank-lines\fP) deletes all blank lines after the current line,
                    756: and if the current line is blank deletes all the blank
                    757: lines preceding the current line as well
                    758: (leaving one blank line, the current line).
                    759: .NH 2
                    760: Killing by Lines
                    761: .XS \n(PN 5n
                    762: \*(SN Killing by Lines
                    763: .XE
                    764: .LP
                    765: The simplest kill command is the C-K command.
                    766: If issued at the beginning of a line,
                    767: it kills all the text on the line,
                    768: leaving it blank.
                    769: If given on a line containing only white space (blanks and tabs)
                    770: the line disappears.
                    771: As a consequence,
                    772: if you go to the front of a non-blank line and type two C-K's,
                    773: the line disappears completely.
                    774: .LP
                    775: More generally,
                    776: C-K kills from point up to the end of the line,
                    777: unless it is at the end of a line.
                    778: In that case,
                    779: it kills the line separator following the line,
                    780: thus merging the next line into the current one.
                    781: Invisible spaces and tabs at the end of the line are ignored when
                    782: deciding which case applies,
                    783: so if point appears to be at the end of the line,
                    784: you can be sure the line separator will be killed.
                    785: .LP
                    786: C-K with an argument of zero kills all the text before
                    787: point on the current line.
                    788: .NH 2
                    789: Other Kill Commands
                    790: .XS \n(PN 5n
                    791: \*(SN Other Kill Commands
                    792: .XE
                    793: .LP
                    794: A kill command which is very general is C-W (\fIkill-region\fP),
                    795: which kills everything between point and the mark.*
                    796: .FS
                    797: *Often users switch this binding from C-W to C-X C-K because it is too
                    798: easy to hit C-W accidentally.
                    799: .FE
                    800: With this command,
                    801: you can kill and save contiguous characters,
                    802: if you first set the mark at one end of them and go to the other end.
                    803: .LP
                    804: Other syntactic units can be killed, too;
                    805: words,
                    806: with ESC Rubout and ESC D;
                    807: and, sentences,
                    808: with ESC K and C-X Rubout.
                    809: .NH 2
                    810: Un-killing
                    811: .XS \n(PN 5n
                    812: \*(SN Un-killing (Yanking)
                    813: .XE
                    814: .LP
                    815: Un-killing (yanking) is getting back text which was killed.
                    816: The usual way to
                    817: move or copy text is to kill it and then un-kill it one or more times.
                    818: .IP "C-Y" 10n
                    819: Yank (re-insert) last killed text.
                    820: .IP "ESC Y" 10n
                    821: Replace re-inserted killed text with the previously killed text.
                    822: .IP "ESC W" 10n
                    823: Save region as last killed text without killing.
                    824: .LP
                    825: Killed text is pushed onto a \fIring buffer\fP called the \fIkill
                    826: ring\fP that remembers the last 10 blocks of text that were killed.
                    827: (Why it is called a ring buffer will be explained below).
                    828: The command C-Y (\fIyank\fP) reinserts the text of the most recent kill.
                    829: It leaves the cursor at the end of the text,
                    830: and puts the mark at the beginning.
                    831: Thus,
                    832: a single C-Y undoes the C-W.
                    833: .LP
                    834: If you wish to copy a block of text,
                    835: you might want to use ESC W (\fIcopy-region\fP),
                    836: which copies the region into the kill ring without removing it from the buffer.
                    837: This is approximately equivalent to C-W followed by C-Y,
                    838: except that ESC W does not mark the buffer as
                    839: "changed" and does not cause the screen to be rewritten.
                    840: .LP
                    841: There is only one kill ring shared among all the buffers.
                    842: After visiting a new file,
                    843: whatever was last killed in the previous file is still on top of the kill ring.
                    844: This is important for moving text between files.
                    845: .NH 2
                    846: Appending Kills
                    847: .XS \n(PN 5n
                    848: \*(SN Appending Kills
                    849: .XE
                    850: .LP
                    851: Normally,
                    852: each kill command pushes a new block onto the kill ring.
                    853: However,
                    854: two or more kill commands immediately in a row (without any other
                    855: intervening commands) combine their text into a
                    856: single entry on the ring,
                    857: so that a single C-Y command gets it all back as it was before it was killed.
                    858: This means that you don't have to kill all the text in one command;
                    859: you can keep killing line after line,
                    860: or word after word,
                    861: until you have killed it all,
                    862: and you can still get it all back at once.
                    863: .LP
                    864: Commands that kill forward from 
                    865: .I point 
                    866: add onto the end of the previous
                    867: killed text.
                    868: Commands that kill backward from 
                    869: .I point
                    870: add onto the beginning.
                    871: This way,
                    872: any sequence of mixed forward and backward kill
                    873: commands puts all the killed text into one entry without needing rearrangement.
                    874: .NH 2
                    875: Un-killing Earlier Kills
                    876: .XS \n(PN 5n
                    877: \*(SN Un-killing Earlier Kills
                    878: .XE
                    879: .LP
                    880: To recover killed text that is no longer the most recent kill,
                    881: you need the ESC Y (\fIyank-pop\fP) command.
                    882: The ESC Y command can be used
                    883: only after a C-Y (yank) command or another ESC Y.
                    884: It takes the un-killed
                    885: text inserted by the C-Y and replaces it with the text from an earlier
                    886: kill.
                    887: So,
                    888: to recover the text of the next-to-the-last kill,
                    889: you first use C-Y to recover the last kill,
                    890: and then discard it by use of ESC Y to move back to the previous kill.
                    891: .LP
                    892: You can think of all the last few kills as living on a ring.
                    893: After a C-Y command,
                    894: the text at the front of the ring is also present in the buffer.
                    895: ESC Y "rotates" the ring bringing the previous string of text to the front
                    896: and this text replaces the other text in the buffer as well.
                    897: Enough ESC Y commands can rotate any part of the ring to the front,
                    898: so you can get at any killed text so long as it is recent enough
                    899: to be still in the ring.
                    900: Eventually the ring rotates all the way
                    901: around and the most recently killed text comes to the front
                    902: (and into the buffer) again.
                    903: ESC Y with a negative argument rotates the ring backwards.
                    904: .LP
                    905: When the text you are looking for is brought into the buffer,
                    906: you can stop doing ESC Y's and the text will stay there.
                    907: It's really just a copy of what's at the front of the ring,
                    908: so editing it does not change what's in the ring.
                    909: And the ring,
                    910: once rotated,
                    911: stays rotated,
                    912: so that doing another C-Y gets another copy of what you rotated to the
                    913: front with ESC Y.
                    914: .LP
                    915: If you change your
                    916: mind about un-killing,
                    917: C-W gets rid of the un-killed text, even
                    918: after any number of ESC Y's.
                    919: .NH 1
                    920: Searching
                    921: .XS \n(PN
                    922: \*(SN Searching
                    923: .XE
                    924: .LP
                    925: The search commands are useful for finding and moving to arbitrary
                    926: positions in the buffer in one swift motion.
                    927: For example,
                    928: if you just ran the spell program on a paper
                    929: and you want to correct some word,
                    930: you can use the search commands to move directly to that word.  There are
                    931: two flavors of search: \fIstring search\fP and \fIincremental search\fP.
                    932: The former is the default flavor\(emif you want to use incremental search
                    933: you must rearrange the key bindings (see below).
                    934: .NH 2
                    935: Conventional Search
                    936: .XS \n(PN 5n
                    937: \*(SN Conventional Search
                    938: .XE
                    939: .LP
                    940: .IP "C-S" 15n
                    941: Search forward.
                    942: .IP "C-R" 15n
                    943: Search backward.
                    944: .LP
                    945: To search for the string "FOO" you type "C-S FOO<return>".
                    946: If \s-2JOVE\s0 finds
                    947: FOO it moves point to the end of it; otherwise \s-2JOVE\s0 prints an error
                    948: message and leaves point unchanged.
                    949: C-S searches forward from point
                    950: so only occurrences of FOO after point are found.
                    951: To search in the other direction use C-R.
                    952: It is exactly the same as C-S except it searches in the opposite direction,
                    953: and if it finds the string,
                    954: it leaves point at the beginning of it,
                    955: not at the end as in C-S.
                    956: .LP
                    957: While \s-2JOVE\s0 is searching it prints the search string on the message line.
                    958: This is so you know what \s-2JOVE\s0 is doing.
                    959: When the system is heavily loaded and
                    960: editing in exceptionally large buffers,
                    961: searches can take several (sometimes many) seconds.
                    962: .LP
                    963: \s-2JOVE\s0 remembers the last search string you used,
                    964: so if you want to search for the same string you can type "C-S <return>".
                    965: If you mistyped the last search string,
                    966: you can type C-S followed by C-R.
                    967: C-R,
                    968: as usual,
                    969: inserts the default search string into the minibuffer,
                    970: and then you can fix it up.
                    971: .NH 2
                    972: Incremental Search
                    973: .XS \n(PN 5n
                    974: \*(SN Incremental Search
                    975: .XE
                    976: .LP
                    977: This search command is unusual in that is is \fIincremental\fP;
                    978: it begins to search before you have typed the complete search string.
                    979: As you type in the search string,
                    980: \s-2JOVE\s0 shows you where it would be found.
                    981: When you have typed enough characters to identify the place you want,
                    982: you can stop.
                    983: Depending on what you will do next,
                    984: you may or may not need to terminate the search explicitly with a Return first.
                    985: .LP
                    986: The command to search is C-S (\fIi-search-forward\fP).
                    987: C-S reads in characters and positions the cursor at the first
                    988: occurrence of the characters that you have typed so far.
                    989: If you type C-S and then F,
                    990: the cursor moves in the text just after the next "F".
                    991: Type an "O",
                    992: and see the cursor move to after the next "FO".
                    993: After another "O",
                    994: the cursor is after the next "FOO".
                    995: At the same time,
                    996: the "FOO" has echoed on the message line.
                    997: .LP
                    998: If you type a mistaken character,
                    999: you can rub it out.
                   1000: After the FOO,
                   1001: typing a Rubout makes the "O" disappear from the message line,
                   1002: leaving only "FO".
                   1003: The cursor moves back in the buffer to the "FO".
                   1004: Rubbing out the "O" and "F" moves the cursor back to where you
                   1005: started the search.
                   1006: .LP
                   1007: When you are satisfied with the place you have reached,
                   1008: you can type a Return,
                   1009: which stops searching,
                   1010: leaving the cursor where the search brought it.
                   1011: Also,
                   1012: any command not specially meaningful in searches stops
                   1013: the searching and is then executed.
                   1014: Thus,
                   1015: typing C-A would exit the search and then move to the beginning of the line.
                   1016: Return is necessary only if the next character you want to type is a printing
                   1017: character,
                   1018: Rubout,
                   1019: Return,
                   1020: or another search command,
                   1021: since those are the characters that have special meanings inside the search.
                   1022: .LP
                   1023: Sometimes you search for "FOO" and find it,
                   1024: but not the one you hoped to find.
                   1025: Perhaps there is a second FOO that you forgot about,
                   1026: after the one you just found.
                   1027: Then type another C-S and the cursor will find the next FOO.
                   1028: This can be done any number of times.
                   1029: If you overshoot,
                   1030: you can return to previous finds by rubbing out the C-S's.
                   1031: .LP
                   1032: After you exit a search,
                   1033: you can search for the same string again by typing just C-S C-S:
                   1034: one C-S command to start the search and then
                   1035: another C-S to mean "search again for the same string".
                   1036: .LP
                   1037: If your string is not found at all,
                   1038: the message line says "Failing I-search".
                   1039: The cursor is after the place where \s-2JOVE\s0 found as much of
                   1040: your string as it could.
                   1041: Thus,
                   1042: if you search for FOOT and there is no FOOT,
                   1043: you might see the cursor after the FOO in FOOL.
                   1044: At this point there are several things you can do.
                   1045: If your string was mistyped,
                   1046: you can rub some of it out and correct it.
                   1047: If you like the place you have found,
                   1048: you can type Return or some other \s-2JOVE\s0 command
                   1049: to "accept what the search offered".
                   1050: Or you can type C-G,
                   1051: which undoes the search altogether and positions you back where you started
                   1052: the search.
                   1053: .LP
                   1054: You can also type C-R at any time to start searching backwards.
                   1055: If a search fails because the place you started was too late in the file,
                   1056: you should do this.
                   1057: Repeated C-R's keep looking backward for more occurrences of the last search string.
                   1058: A C-S starts going forward again.
                   1059: C-R's can be rubbed out just like anything else.
                   1060: .NH 2
                   1061: Searching with Regular Expressions
                   1062: .XS \n(PN 5n
                   1063: \*(SN Searching with Regular Expressions
                   1064: .XE
                   1065: .LP
                   1066: In addition to the searching facilities described above,
                   1067: \s-2JOVE\s0
                   1068: can search for patterns using regular expressions.
                   1069: The handling of regular expressions in \s-2JOVE\s0 is like that of \fIed(1)\fP
                   1070: or \fIvi(1)\fP, but with some notable additions.
                   1071: The extra metacharacters understood by \s-2JOVE\s0 are \e<,
                   1072: \e>,
                   1073: \e\|| and \e\|{.
                   1074: The first two of these match the beginnings and endings of words;
                   1075: Thus the search pattern,
                   1076: "\|\e<Exec" would match all words beginning with the letters "Exec".
                   1077: .LP
                   1078: An \e\|| signals the beginning of an alternative \(em that is, the
                   1079: pattern "foo\e\||bar" would match either "foo" or "bar".  The "curly
                   1080: brace" is a way of introducing several sub-alternatives into a pattern.
                   1081: It parallels the [] construct of regular expressions, except it specifies
                   1082: a list of alternative words instead of just alternative characters.  So
                   1083: the pattern "foo\e\|{bar,baz\e\|}bie" matches "foobarbie" or "foobazbie".
                   1084: .LP
                   1085: \s-2JOVE\s0 only regards metacharacters as special if the variable
                   1086: \fImatch-regular-expressions\fP is set to "on".
                   1087: The ability to have \s-2JOVE\s0 ignore these characters is useful if
                   1088: you're editing a document about patterns and regular expressions or
                   1089: when a novice is learning \s-2JOVE\s0.
                   1090: .LP
                   1091: Another variable that affects searching is \fIcase-ignore-search\fP.  If
                   1092: this variable is set to "on" then upper case and lower case letters are
                   1093: considered equal.
                   1094: .NH 1
                   1095: Replacement Commands
                   1096: .XS \n(PN
                   1097: \*(SN Replacement Commands
                   1098: .XE
                   1099: .LP
                   1100: Global search-and-replace operations are not needed as often in \s-2JOVE\s0
                   1101: as they are in other editors,
                   1102: but they are available.
                   1103: In addition to
                   1104: the simple Replace operation which is like that found in most editors,
                   1105: there is a Query Replace operation which asks,
                   1106: for each occurrence of the pattern,
                   1107: whether to replace it.
                   1108: .NH 2
                   1109: Global replacement
                   1110: .XS \n(PN 5n
                   1111: \*(SN Global Replacement
                   1112: .XE
                   1113: .LP
                   1114: To replace every occurrence of FOO after point with BAR,
                   1115: you can do, e.g., "ESC R FOO<return>BAR" as the \fIreplace-string\fP command
                   1116: is bound to the ESC R.
                   1117: Replacement takes place only between point and the end of the buffer
                   1118: so if you want to cover the whole buffer you must go to the beginning first.
                   1119: .NH 2
                   1120: Query Replace
                   1121: .XS \n(PN 5n
                   1122: \*(SN Query Replace
                   1123: .XE
                   1124: .LP
                   1125: If you want to change only some of the occurrences of FOO,
                   1126: not all,
                   1127: then the global \fIreplace-string\fP is inappropriate;
                   1128: Instead,
                   1129: use, e.g., "ESC Q FOO<return>BAR", to run the command \fIquery-replace-string\fP.
                   1130: This displays each occurrence of FOO and waits for you to say whether
                   1131: to replace it with a BAR.
                   1132: The things you can type when you are shown an occurrence of FOO are:
                   1133: .IP "Space" 15n
                   1134: to replace the FOO.
                   1135: .IP "Rubout" 15n
                   1136: to skip to the next FOO without replacing this one.
                   1137: .IP "Return" 15n
                   1138: to stop without doing any more replacements.
                   1139: .IP "Period" 15n
                   1140: to replace this FOO and then stop.
                   1141: .IP "! or P" 15n
                   1142: to replace all remaining FOO's without asking.
                   1143: .IP "C-R or R" 15n
                   1144: to enter a recursive editing level,
                   1145: in case the FOO needs to be edited rather than just replaced with a BAR.
                   1146: When you are done,
                   1147: exit the recursive editing level with C-X C-C and the next FOO will
                   1148: be displayed.
                   1149: .IP "C-W" 15n
                   1150: to delete the FOO, and then start editing the buffer.
                   1151: When you are finished editing whatever is to replace the FOO,
                   1152: exit the recursive editing level with C-X C-C
                   1153: and the next FOO will be displayed.
                   1154: .IP "U" 15n
                   1155: move to the last replacement and undo it.
                   1156: .LP
                   1157: Another alternative is using \fIreplace-in-region\fP which is just like
                   1158: \fIreplace-string\fP except it searches only within the region.
                   1159: .LP

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.