\documentstyle[a4,12pt]{article} \begin{document} \author{APM Manual pages} \title{ IE - The Reference Manual} \maketitle \parskip .1 in \setcounter{secnumdepth}{10} \parindent 0in \section{Preamble} {\hspace*{1.3 in}} Electronic Version 1.2 IE is a screen editor, based on single keystroke commands, and immediate entry of text. It is very simple to use, but can provide many advanced features. \section{Getting started} To edit a file on any system that supports IE just say: {\hspace*{0.4 in}} IE file Then, any text you type will be inserted into the file where the cursor is on the screen. {\hspace{0.2 in}} The RETURN key has a similar effect as when used outside the editor, that is it terminates the current line, and moves onto a new one. The DEL key deletes the character to the left of the cursor, including new lines. The ARROW keys move around the screen. {\hspace{0.2 in}} To close the edit and write back the modified file, press the COMMA (,) key on the numeric keypad at the right hand side of the keyboard. {\hspace{0.2 in}} If you do NOT want to keep what changes you have made the edit can be ABORTED by typing Ctrl-Y, when you will be asked if you really want to abort, typing Y or Ctrl-Y in response to this leaves the editor without writing back the modified file. \section{Terminal types} The following terminals are supported: {\hspace*{0.2 in}} Visual 200 {\hspace{0.3 in}} (V200) \\ {\hspace*{0.2 in}} Visual 55 {\hspace{0.4 in}} (V55) \\ {\hspace*{0.2 in}} Wyse 75 {\hspace{0.5 in}} (WY75) {\hspace{0.6 in}} * \\ {\hspace*{0.2 in}} VT100 {\hspace{1.7 in}} ** \\ {\hspace*{0.2 in}} VT220 {\hspace*{0.2 in}} Wyse 50 {\hspace{0.5 in}} (WY50) {\hspace{0.6 in}} *** \\ {\hspace*{0.2 in}} Freedom 100 {\hspace{1.3 in}} *** * As Wyse 75 terminals are very close to VT100s it is normal for the operating system to believe that these are VT100s. For editing purposes there are a few differences, and it is important to specify to IE that you are using a Wyse 75, for example use the /WY75 qualifier on VAX/VMS. ** Most terminals provide this as an emulation mode. *** These terminals were only added as experiments, they are not covered by \\ {\hspace*{0.3 in}} this manual. \section{Keys} The following types of terminal keys will be referred to in this manual: Standard \\ {\hspace*{0.6 in}} ordinary letters, plus main function control keys which \\ {\hspace*{0.6 in}} now have long names, such as RETURN. Control \\ {\hspace*{0.6 in}} written as Ctrl- plus the letter. Function \\ {\hspace*{0.6 in}} these are labelled F0 upwards, many now terminals \\ {\hspace*{0.6 in}} start at F1 , or even F6 rather than F0. VT100oid \\ {\hspace*{0.6 in}} terminals also have a set of keys PF1 to PF4, these \\ {\hspace*{0.6 in}} are not treated as function keys by IE, but as \\ {\hspace*{0.6 in}} oddities, see below. True VT100s do not have function \\ {\hspace*{0.6 in}} keys, which is rather restrictive, so IE interprets PF1 \\ {\hspace*{0.6 in}} followed by a digit as being F0 to F9. Keypad \\ {\hspace*{0.6 in}} these are the numeric keys on the right hand of the \\ {\hspace*{0.6 in}} keyboard. These are either normal, when written as \\ {\hspace*{0.6 in}} Keypad followed by a number, or shifted, when written \\ {\hspace*{0.6 in}} as Function Keypad and then a number. {\hspace*{0.6 in}} To obtain the Function Keypad values on Visual 200 \\ {\hspace*{0.6 in}} press the CONVERT FUNCTION key with the keypad digit. \\ {\hspace*{0.6 in}} On the Visual 55s this key is labelled FUNCTION. On \\ {\hspace*{0.6 in}} VT100oid terminals PF1 must be pressed once, before- \\ {\hspace*{0.6 in}} hand. Oddities \\ {\hspace*{0.6 in}} Terminal manufacturers like to put all sorts of bizarre \\ {\hspace*{0.6 in}} extra keys on their products. This is a pain for \\ {\hspace*{0.6 in}} editors, but IE tries to cope. Visual 200s have \\ {\hspace*{0.6 in}} extra keys galore, such as CP and CL. VT100oid \\ {\hspace*{0.6 in}} terminals have PF1 to PF4, IE uses PF1 as a shift, but \\ {\hspace*{0.6 in}} PF2-4 can be used, as can PF1 followed by PF2-PF4 which \\ {\hspace*{0.6 in}} is the same as Function PF2-Function PF4. Any key on the terminal can be attached to an IE command, or a character; this process is called binding. For each command the standard key bindings for each of the main terminals is given, but the user can redefine any of these keys, see the section on Keyboard Files. If a command is not normally bound to any key by default the not available symbol N/A is used. \section{Display} IE reads files into buffers, which the user then looks at through a window, which is a portion of the terminal screen. This window is always the full width of the screen, and is normally the full height of the screen. It is possible to reduce the window's height using the WINDOW TOP and WINDOW BOTTOM profile options. On VAX/VMS systems broadcast messages are trapped and displayed in a special one line Broadcast Window at the top of the screen in FEATURE MODE and stay there until cancelled. FEATURE MODE is a terminal independent method of highlighting text. On Visual 200 and Visual 55 terminals feature mode appears dimmer than surrounding text; on VT100 and VT220s in inverse video; on Wyse 75 whatever the current setting of the Attribute setup value is, this is recommended to be either INVERSE or UNDERLINE for IE, but not DIM, as this does not look so good. The top line of the window is also used for reporting error messages. These appear on the top line of the window, or the line below the Broadcast Window, in FEATURE MODE, and remain until the next key is pressed, when the line is restored. This line is called the message line. All prompts for extra information also appear on this line. If a line is longer than the width of the terminal (normally 80 characters) a graphics character like a T turned on its side is displayed in the rightmost column on the screen. If the cursor is standing on this character it means that it is in fact some number of characters off the right hand side of the screen. To allow the creation of empty buffers, which are in effect new files, a special line is added to the end of the file during the edit. This means that an empty file does in fact have this one virtual line in it. By default it is displayed as a graphics line. Control characters are displayed in a helpful fashion. The ASCII HT character is interpreted as being an 8 character position TAB, as presented by VAX/VMS and VAX/UNIX. {\hspace{0.2 in}} Normally the space occupied by TAB filling is simply blank (spaces) but the TAB SHOW option can be set to print a graphics character in each column position that the TAB moves accross. On Visual 200 and Visual 55 terminals this is a double dot character, on VT100, VT220 and Wyse 75 it is represented by a single character position HT symbol. Other control characters are displayed as $\hat{ }${}$<$letter$>$ in FEATURE MODE, and occupy two character positions on the screen, but appear for editing purposes as one. Characters with the eighth bit set are displayed with a degrees sign before them, including control characters which then take up three character positions. Bugs: HT display: This does not interact well with the end of line marker, use shorter lines! \section{Calling IE} IE is currently mounted on the following systems: {\hspace*{0.2 in}} VAX/VMS \\ {\hspace*{0.2 in}} VAX UNIX 4.2bsd \\ {\hspace*{0.2 in}} APM To simply edit a file use the command: {\hspace*{0.2 in}} IE file Or to edit one file onto another, use the command {\hspace*{0.2 in}} IE file1 file2 {\hspace{0.9 in}} on VAX/VMS and UNIX \\ {\hspace*{0.2 in}} IE file1/file2 {\hspace{0.9 in}} on the APM The following command line switches are available. On VAX/VMS the switch is proceeded by a /, on UNIX and the APM a -. \subsection{NOCONFIRM} This means that when you abort the edit you are not asked if your really mean it. \subsection{CREATE} Ignore any existing file of the given name; always start with an empty buffer. \subsection{IGNORE} This qualifier is used in association with the RECOVER switch to indicate that any differences in editing environment between the original edit and the recovery edit should be ignored. See the section on Journalising for further details. \subsection{JOURNAL} The qualifier JOURNAL=$<$file name$>$ can be used to override the default journal file name, see the section of Journalising for further details. \subsection{KEYBOARD} The qualifier KEYBOARD=$<$file name$>$ can be used to override the default keyboard file. \subsection{LAST} Edit the file that was last edited. \subsection{MEMORY} This sets the edit memory to be the file being edited. If the editor is invoked with no file name after this the remembered file will be edited. {\hspace{0.2 in}} The position within the file when the last edit was closed is remembered between edit sessions, unless the NOSAVE\_POSITION qualifier is used. The TOP switch can be used to override the saved position when starting an edit. \subsection{PROFILE} The /NOPROFILE switch may be used to cause any profile file that is in use to be ignored. On all systems PROFILE=$<$file name$>$ can be used to set up a value for the profile file. \subsection{READ} This is used to prevent files being written out, thus avoiding accidental damage. \subsection{RECOVER} This invokes the edit recovery mechanism, see the section on Journalising. \subsection{NOSAVE\_POSITION} This switch indicates that the last used position in a memory edit should not be remembered. See the qualifier MEMORY for further details. \subsection{SILENT} This suppress the printing of the "Reading from ..." messages at the start and finish of edits. This is very useful in command files and when calling the editor as a subroutine. \subsection{TOP} The saved memory edit position should not be used; at the start of the edit the cursor will be at the top of the file. See the switch MEMORY for more details. \subsection{WIDTH} If you are using a terminal that has a width other than 80 characters the WIDTH=$<$number$>$ qualifier can be used to specify the terminals width. This is most useful when using an option like 132 columns on VT100oid terminals. On VAX/VMS the value given using SET TERMINAL/WIDTH=$<$number$>$ will be used by default. On the APM the operating system internal value is used, as is the screen height. This means that if the Level 1 graphics Visual 200 emulator is in use IE utilises all the available screen space. \subsection{Terminal Types} \subsubsection{On VAX/VMS} Normally the default terminal type is used, but this may be overridden using the qualifiers /VT100 /VT220 /V200 /WY75 /V55. For more exotic terminals the form /DEVICE\_TYPE=$<$name$>$ should be used. \subsubsection{On VAX UNIX} This is normally taken from an environmental variable TERM, as with normal UNIX programs. This can be overridden with the symbol IE\_TT\_Type if the real terminal type differs from that know to the existing termcap database. An example of this is using a Wyse 75 or VT220 terminal, which can both use TERM set to vt100, but benefit from IE knowing exactly what type they are. \subsubsection{On APM} The value of the symbol TERMINAL is translated for the default terminal type, but the following qualifiers are provided: {\hspace*{0.2 in}} -V200 \\ {\hspace*{0.2 in}} -V55 \\ {\hspace*{0.2 in}} -VT100 \\ {\hspace*{0.2 in}} -VT220 \\ {\hspace*{0.2 in}} -Freedom100 \\ {\hspace*{0.2 in}} -WY50 \\ {\hspace*{0.2 in}} -WY75 \section{Insertion} Normally to insert text, just type. This inserts at the current position what you type just as you would expect. {\hspace{0.2 in}} The RETURN key is bound to a function called Break Line which terminates the current line and moves onto a new one, also as you would expect. {\hspace{0.2 in}} Some other useful functions are described below. \subsection{Insert Line} Bindings: {\hspace{0.4 in}} All terminals: Keypad 7 This insert a new blank line above the current line. The cursor is moved to the same level of indentation as on the current line, but on the new line. The current line is unaffected. If the AUTO INDENT option is set to NO, then the cursor is moved to the start of the new line. \subsection{Break Line} Bindings: {\hspace{0.4 in}} All terminals: RETURN This breaks the current line at the cursor position. Any text after the cursor is moved onto a new line indented as much as on the current line. The cursor is then moved to the start of the text on the new line. If the AUTO INDENT option is set to NO the text is moved to the start of the new line. \subsection{Insert Literal} Bindings: {\hspace{0.4 in}} All terminals: Ctrl-P This allows any typeable character to be inserted at the current cursor position. To do this, issue the command, and then type the key that is to be inserted. This is useful for inserting keys that are normally bound to other functions, such as RETURN, or Ctrl-P itself. Notice that non-ASCII defined keys, such as function keys, are in fact composites made up of, usually, what are called escape sequences. This means that Insert Literal followed by a function key will insert an ESC character followed by some text characters which identify the escape sequence, and once separated from their escape simply become ordinary text. \subsection{Insert ASCII} Bindings: {\hspace{0.4 in}} All terminals: Ctrl-A This allows control characters to be inserted at the current cursor position by ASCII value. The prompt "ASCII: " appears on the top line of the window and the ASCII code of the desired character can be typed in decimal. Bugs The NUL character can not be inserted in this fashion, use Ctrl-P and Ctrl-@. \subsection{Insert TAB} Bindings: {\hspace{0.4 in}} All terminals: TAB This, by default, does not insert the ASCII HT character, but rather inserts spaces until the next internal tab stop is reached. The TAB WIDTH option can be used to set the number of spaces between tab stops. It is possible to define TAB to insert the ASCII HT character, see the command Define Key. In Overwrite Mode Insert TAB merely moves along to the next TAB stop and does not alter the line. \subsection{Typing Modes} By default text typed at the terminal is inserted into the text. It is also possible to select a mode whereby typed text overwrites existing text. {\hspace{0.2 in}} The following commands manipulate this mode setting. \subsubsection{Insert Mode} Bindings \\ {\hspace*{1.0 in}} Visual 55: N/A \\ {\hspace*{1.0 in}} All other terminals: Keypad 8 Enters text insertion mode. \subsubsection{Overwrite Mode} Bindings \\ {\hspace*{1.0 in}} Visual 55: N/A \\ {\hspace*{1.0 in}} All other terminals: Function Keypad 8 Enters text overwrite mode. \subsubsection{Toggle Mode} Bindings \\ {\hspace*{1.0 in}} Visual 55: Keypad 8 \\ {\hspace*{1.0 in}} All other terminals: N/A Swaps from insert mode to overwrite mode. \subsection{Formatting} Certain elementary formating facilities are provided by the editor. They all rely on the numeric options LEFT MARGIN and RIGHT MARGIN, which default to 1 and 80. In normal typing if AUTO INDENT is set to NO, then new lines will be started at the LEFT MARGIN character position. If the AUTO LINE BREAK option is set to YES text will be automatically broken before a word when the cursor goes beyond the RIGHT MARGIN setting. This means that RETURN need rarely be typed when entering ordinary text. If AUTO LINE BREAK is at YES and JUSTIFY is set to YES, then lines will be padded with spaces until they fill the space between LEFT and RIGHT MARGINs. The padding alternates between left end and right end first. This can be used to type in ready justified text, and for typing newspaper style columns of text. The Justify Text command can be used to rejustify a line after a correction. This is a very rudimentary facility and not intended as a replacement for text formatting programs, rather it is for short texts, such as mail or news items. \section{Movement} Horizontal movement is counted in characters, where HTs and control characters count as one character. Vertical movement is counted in lines. During vertical movement the editor always tries to keep one line above or below the current line on the screen. This is obviously not possible at the begining and end of the buffer. \subsection{Left} Bindings: {\hspace{0.4 in}} All Terminals: Left Arrow This moves the cursor one character to the left, unless at the start of a line, in which case it has no effect. \subsection{Right} Bindings: {\hspace{0.4 in}} All Terminals: Right Arrow This moves the cursor one character to the right, unless at the end of the line, in which case it has no effect. \subsection{Up} Bindings: {\hspace{0.4 in}} All Terminals: Up Arrow The cursor is moved onto the previous line, unless at the top of the buffer, in which case it has no effect. If there is text on the line above up to the point where the cursor is then the horizontal position of the cursor is unchanged. If however the line above is shorter than the current one, the cursor is moved to the end of the text on the line above, possibly the start of the line if it is empty. If the WIGGLE option is set to YES then the cursor will be moved back out again when it moves onto a long enough line on a subsequent Up command. If the option FREE CURSOR is set to YES, then the cursor does not move its horizontal position at all. \subsection{Down} Bindings: {\hspace{0.4 in}} All Terminals: Down Arrow The cursor is moved onto the next line, unless at the bottom of the buffer, in which case it has no effect. If there is text on the line below up to the point where the cursor is then the horizontal position of the cursor is unchanged. If however the line below is shorter than the current one, the cursor is moved to the end of the text on the line below, possibly the start of the line if it is empty. If the WIGGLE option is set to YES then the cursor will be moved back out again when it moves onto a long enough line on a subsequent Down command. If the option FREE CURSOR is set to YES, then the cursor does not move its horizontal position at all. \subsection{End of Line} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 1 This moves the cursor to the end of the current line. This command drops a Magic Marker, see Last Position command for further details. \subsection{End of Page} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 3 This moves the cursor to the end of the line currently the last one on the screen. A new line is scrolled onto the screen unless at the end of the buffer. This command can be used with the Scroll Page Down command to scan through a buffer a screen full at a time. This command drops a Magic Marker, see Last Position command for further details. \subsection{End of File} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 2 This moves the cursor to the last line of the buffer. This command drops a Magic Marker, see Last Position command for further details. \subsection{Start of Line} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 0 The moves the cursor to the start of the current line. This command drops a Magic Marker, see Last Position command for more details. \subsection{Start of Page} Bindings: {\hspace{0.4 in}} All Terminals: Function Keypad 3 The cursor is moved to the start of the line currently at the top of the screen. A new line is scrolled onto the top of the screen unless at the top of the buffer. This command can be used with Scroll Page Up to page backwards through the buffer, screen at a time. This command drops a Magic Marker, see Last Position command for more details. \subsection{Start of File} Bindings {\hspace*{1.1 in}} Visual 200: HOME \\ {\hspace*{1.1 in}} Visual 55: HOME \\ {\hspace*{1.1 in}} Wyse 75: {\hspace{0.3 in}} HOME and PF2 \\ {\hspace*{1.1 in}} VT100: {\hspace{0.4 in}} PF2 \\ {\hspace*{1.1 in}} VT220: {\hspace{0.4 in}} PF2 The cursor is moved to the start of the first line of the buffer. This command drops a Magic Marker, see Last Position Command for more details. \subsection{Word Left} Bindings {\hspace*{1.1 in}} Visual 200: F0 \\ {\hspace*{1.1 in}} VT220: F6 \\ {\hspace*{1.1 in}} All Other Terminals: F1 This moves the cursor to the start of the next word to the left, unless at the start of the line in which case it has no effect. A word is defined to be a group of letters, a group of numbers, or a single punctuation mark. White space (i.e. spaces and HTs) are ignored. \subsection{Word Right} Bindings {\hspace*{1.1 in}} Visual 200: F1 \\ {\hspace*{1.1 in}} VT220: F7 \\ {\hspace*{1.1 in}} All Other Terminals: F2 This moves the cursor to the start of the next word to the right, unless at the end of the line in which case it has no effect. A word is defined to be a group of letters, a group of numbers, or a single punctuation mark. White space (i.e. spaces and HTs are ignored). \subsection{Up to Start} Bindings {\hspace*{1.1 in}} Visual 200: F2 \\ {\hspace*{1.1 in}} VT220: F8 \\ {\hspace*{1.1 in}} All Other Terminals: F3 This moves the cursor to the start of the line above. This command has no effect at the top of the bufer. This command drops a Magic Marker, see Last Position command for more details. \subsection{Down to Start} Bindings {\hspace*{1.1 in}} Visual 200: F3 \\ {\hspace*{1.1 in}} VT220: F9 \\ {\hspace*{1.1 in}} All Other Terminals: F4 This moves the cursor to the start of the line below. This command has no effect at the end of the buffer. This command drops a Magic Marker, see Last Position command for more details. \subsection{Move to Line} Bindings {\hspace*{1.4 in}} VT220: F10 \\ {\hspace*{1.4 in}} All Other Terminals: LINE FEED This prompts "Line: " and expects a number. If RETURN is pressed immediately then the command has no effect. If a number is typed (followed by RETURN) then the cursor is moved to the line with that number. {\hspace{0.2 in}} This is an absolute move, it is also possible to specify relative moves by using + or - before the number, for example the sequence {\hspace*{0.2 in}} LINE FEED + 1 0 RETURN will move 10 lines further on in the buffer. To find out the number of the current line, and the number of lines in the buffer, press ? in response to the prompt. No RETURN is needed. \subsection{Move to Column} Bindings {\hspace*{1.3 in}} VT220: Ctrl-Space \\ {\hspace*{1.3 in}} All Other Terminals: Ctrl-@ This prompts "Column: " and expects a number. If RETURN is pressed immediately then the command has no effect. If a number is typed (followed by RETURN) then the cursor is moved to the column with that number. {\hspace{0.2 in}} This is an absolute move, it is also possible to specify relative moves by using + or - before the number, for example the sequence {\hspace*{0.2 in}} Ctrl-@ - 1 5 RETURN will move 15 characters to the left. To find out the number of the current column, and the length of the current line, press ? in response to the prompt. No RETURN is needed. \subsection{Scroll Page Up} Bindings {\hspace*{1.1 in}} Visual 55: N/A \\ {\hspace*{1.1 in}} All Other Terminals: Function Keypad . This redraws the screen with the current line as the second bottom line, unless at the end of the buffer, when it will be the bottom of the screen. This command is normally used with the Start of Page command to page backwards through the buffer. On VT220 and Wyse 75 terminals the Prev Scrn key is defined to be a macro which performs this function. \subsection{Scroll Page Down} Bindings: {\hspace{0.4 in}} All Terminals: Keypad . This redraws the screen with the current line as the second top line, unless at the start of the buffer, when it will be the top of the screen. This command is normally used with the End of Page command to page forwards through the buffer. On VT220 and Wyse 75 terminals the Next Scrn key is defined to be a macro which performs this function. \subsection{Last Position} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-L This command is used to move back to the place you were before the last major move command. This is very useful if you have accidently used the Start of File or End of File commands. Each command listed above as dropping a Magic Marker can be recovered. A record is kept of all Magic Markers from the start of the edit, but as the Last Position command is used they are eaten up. If a line which had a Magic Marker on it is deleted then that Magic Marker is also deleted. Magic Markers are buffer specific: each buffers has its own list. \section{Searching} It is possible to look for texts within a buffer, in different directions, and to replace the located text with a different one. \subsection{Search} Bindings {\hspace*{1.3 in}} VT220: Find \\ {\hspace*{1.3 in}} All Other Terminal: Keypad 9 This command prompts "Search: " and the text to be located should be typed in, terminated with RETURN. {\hspace{0.2 in}} The buffer is then searched starting at the current cursor position, and working fowards to the end. {\hspace{0.2 in}} For every hundred lines searched a dot is displayed on the top line of the window. When the text is found the cursor is positioned at the start of it. On VT100 and VT220 terminals the located text is underlined. If the text is not found an error message is put up on the message line, and the cursor is not moved. If you want to interrupt a long search, this can be done with Ctrl-C. Notice that this is used as an operating system interrupt character rather than an IE command, and this results in an overloading of the key. On VAX/VMS V4 systems Ctrl-C is echoed as CANCEL in feature mode, but it is not echoed on other systems. This command drops a Magic Marker, see Last Position command for more details. Normally the case of letters does not matter in searching, but if the CASE SIGNIFICANCE option is set to YES then exact case matching is used. By default the search terminates at the end of the buffer, but if the WRAP SEARCH option is set to YES then the search will wrap round to the begining of the buffer down to the position that the search was started from. {\hspace{0.2 in}} Or if the BACK SEARCH option is set, the text before the starting point is searched backwards up to the top of buffer. If either of these steps is taken a message is displayed on the top line of the screen. \subsection{Backwards Search} Bindings {\hspace*{0.9 in}} Visual 200: Ctrl-$\hat{ }${} \\ {\hspace*{0.9 in}} Visual 55: Back Space \\ {\hspace*{0.9 in}} Wyse 75: Back Space \\ {\hspace*{0.9 in}} VT100: Ctrl-$\hat{ }${} \\ {\hspace*{0.9 in}} VT220: Remove This command prompts "hcraeS: " and the text to be located should be typed in, terminated with RETURN. {\hspace{0.2 in}} The buffer is then searched starting at the current cursor position, and working backwards to the begining. {\hspace{0.2 in}} For every hundred lines searched a dot is displayed on the message line. When the text is found the cursor is positioned at the start of it. On VT100 and VT220 terminals the located text is underlined. If the text is not found an error message is put up on the message line. If you want to interrupt a long search, this can be done with Ctrl-C. Notice that this is used as an operating system interrupt character rather than an IE command, and this results in an overloading of the key. On VAX/VMS V4 systems Ctrl-C is echoed as CANCEL in feature mode, but it is not echoed on other systems. This command drops a Magic Marker, see Last Position command for more details. Normally the case of letters does not matter in searching, but if the CASE SIGNIFICANCE option is set to YES then exact case matching is used. By default the search terminates at the top of the buffer, but if the WRAP SEARCH option is set to YES then the search will wrap round to the end of the buffer up to the position that the search was started from. {\hspace{0.2 in}} Or if the BACK SEARCH option is set, the text below the starting point is searched backwards down to the end of the buffer. If either of these steps is taken a message is displayed on the top line of the screen. \subsection{Search Again} Bindings {\hspace*{1.3 in}} VT220: Keypad 9 \\ {\hspace*{1.3 in}} All Other Terminals: Function Keypad 9 This repeats the last Search or Backwards Search. It is exactly like retyping the command. \subsection{Change Text} Bindings {\hspace*{1.4 in}} VT220: Insert Here \\ {\hspace*{1.4 in}} All Other Terminals: Keypad 6 This command prompts "Change: " for a search string, and then "To: " for a replacement string. The text is searched for the string, and if it is found then it is replaced with the second string. The search is carried out in the same manner as Search, and all the options that are relevant to it are relevant to this. If the SEARCH BEFORE REPLACE option is set to NO, then Change Text becomes a substitution command. The prompt "Change To: " is issued and the text typed in response to this is used to replace the text found wth the last Search or Backwards Search command. \subsection{Change Again} Bindings {\hspace*{1.3 in}} VT220: Keypad 6 \\ {\hspace*{1.3 in}} All Other Terminals: Function Keypad 6 This repeats the last Change Text. It is exactly like retyping the previous Change Text command. \subsection{Match Bracket} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-B This command can be used for checking the match of all sorts of brackets and delimiters. An example of its use is moving to a ( character, and then issuing the Match Bracket command. The cursor will be moved onto the matching ), taking account of all the nested brackets, and ignoring line terminations. If there is no matching bracket then an error message is displayed on the message line. If the Match Bracket command is issued when the cursor is NOT on a valid character there is no effect. Bracket matching also takes place backwards. For example placing the cursor on a ) results in the cursor being moved backwards to the matching (. Valid brackets and their match are listed below: {\hspace*{0.4 in}} ( {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} ) \\ {\hspace*{0.4 in}} ) {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} ( {\hspace{0.7 in}} backwards \\ {\hspace*{0.4 in}} [ {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} ] \\ {\hspace*{0.4 in}} ] {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} [ {\hspace{0.7 in}} backwards \\ {\hspace*{0.4 in}} \{ {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} \} \\ {\hspace*{0.4 in}} \} {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} \{ {\hspace{0.7 in}} backwards \\ {\hspace*{0.4 in}} $<$ {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} $>$ \\ {\hspace*{0.4 in}} $>$ {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} $<$ {\hspace{0.7 in}} backwards \\ {\hspace*{0.4 in}} " {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} " \\ {\hspace*{0.4 in}} ' {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} ' \\ {\hspace*{0.4 in}} ` {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} ` \\ {\hspace*{0.4 in}} \% {\hspace{0.3 in}} -$>$ {\hspace{0.3 in}} \% Notice that the single quotes do not match in pairs like `' as they would in true typography. Rather each kind matches the other as this makes more sense for programming language editing. \section{Deletion} The following commands related to removing items from the buffer, and then with restoring them again. {\hspace{0.2 in}} These are divided into horizontal operations on characters, and vertical operations on lines. The character operations are all called Erase operations, while the line commands are Delete operations. \subsection{Delete Line} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 4 This deletes the current line, unless it is the last line of the buffer. {\hspace{0.2 in}} The cursor is moved onto the next line, at the same horizontal position. The deleted line is added to the deleted line list. \subsection{Delete to End} Bindings: {\hspace{0.4 in}} All Terminals: Function Keypad 2 This deletes all the lines, including the current line, up to the end of the file. It provides three options, one to throw the lines away, one to keep them on the deleted line list, or to not perform the deletion at all. A prompt appears with this information, and typing T will throw away the lines, K will keep them and any other key will abandon the command. \subsection{Delete to Start} Bindings {\hspace*{1.1 in}} Visual 200: N/A \\ {\hspace*{1.1 in}} Visual 55: N/A \\ {\hspace*{1.1 in}} Wyse 75: Function PF2 \\ {\hspace*{1.1 in}} VT100: Function PF2 \\ {\hspace*{1.1 in}} VT220: Function PF2 This deletes all the lines above the current line. It provides three options, one to throw the lines away, one to keep them on the deleted line list, or to not perform the deletion at all. A prompt appears with this information, and typing T will throw away the lines, K will keep them and any other key will abandon the command. \subsection{Erase Char} Bindings: {\hspace{0.4 in}} All Terminals: Keypad 5 This deletes the character under the cursor and moves the cursor onto the character to right. Deleted characters are put into the Character Bin and can be rescued with the Undo Erasure command. {\hspace{0.2 in}} Multiple uses of Delete Char result in all the characters deleted being put into a package in the bin, which is sealed when any other command is issued. {\hspace{0.2 in}} This means that whole strings of characters can be deleted and undeleted easily. The use of this command at the end of a line is governed by the JOIN AT END option. By default this is No, and means that the Erase Char command used at the end of a line has no effect. Setting it to yes means that the next line is appended to the current one. \subsection{Erase Left} Bindings: {\hspace{0.4 in}} All Terminals: DEL This deletes the character to the left of the cursor. This also can be used to join lines together, as using DEL at the start of the line joins the current line onto the end of the previous line. Characters, but not line breaks, are put into the Character Bin and can be rescued with the Undo Erasure command. Multiple uses of Erase Left result in the deleted characters being enterer in the reverse order to that which they were typed in, which means that string undoing results in the reversal of text. In Overwrite Mode, Erase Left moves to the character on the left and then overwrites it with a space character. \subsection{Back Tab} Bindings {\hspace*{1.0 in}} Visual 200: BTAB (Shift TAB) \\ {\hspace*{1.0 in}} Visual 55: BTAB \\ {\hspace*{1.0 in}} Wyse 75: Function TAB \\ {\hspace*{1.0 in}} VT100: Function TAB \\ {\hspace*{1.0 in}} VT220: Function TAB This command deletes back to the last internal TAB stop. The TAB WIDTH option can be used to set the number of spaces between tab stops. In Overwrite Mode this command moves back to last TAB stop without changing the line. This command has no effect at the start of a line. \subsection{Erase Word} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-W This command erases the word that the cursor is either within or nearest to. Words are any sequence of letters and or numbers, or individual punctuation characters. When within a word all the characters of the word and any spaces following it are removed, leaving the cursor at the start of the next word or the end of the line. If the cursor is not within a word it is moved to the nearest word to the left and erasure is as before. All the characters that are deleted are put into the Character Bin in a sealed package, which can then be undeleted with one use of the Undo Erasure command. \subsection{Erase to Start} Bindings: {\hspace*{0.9 in}} All Terminals: Ctrl-X \\ {\hspace*{0.9 in}} Plus: \\ {\hspace*{0.9 in}} Wyse 75: Function Keypad 0 \\ {\hspace*{0.9 in}} VT100: Function Keypad 0 \\ {\hspace*{0.9 in}} VT220: Function Keypad 0 This deletes all the characters to the left of the cursor from the current line. All the deleted characters are dropped in the Character Bin in a sealed package, and can be undeleted with one use of Undo Erasure. \subsection{Erase to End} Bindings: {\hspace{0.4 in}} All Terminals: Function Keypad 1 This deletes all the characters from under the cursor to the end of the current line. All the deleted characters are dropped in the Character Bin in a sealed package, and can be undeleted with one use of Undo Erasure. \subsection{Restore Line} Bindings {\hspace*{1.5 in}} VT220: Keypad - \\ {\hspace*{1.5 in}} All Other Terminals: Function Keypad 4 This restores the most recently deleted line, to above the current line, and moves the cursor onto it at the same horizontal position. \subsection{Clone Line} Bindings {\hspace*{1.1 in}} Visual 200: CL \\ {\hspace*{1.1 in}} Visual 55: F12 \\ {\hspace*{1.1 in}} Wyse 75: PF4 \\ {\hspace*{1.1 in}} VT100: PF4 \\ {\hspace*{1.1 in}} VT220: PF4 This is a variation on Restore Line, except that the most recently deleted line is copied into the buffer, AND left on the deletion list. This means that a line can be duplicated many times over by first deleting it, then using Clone Line to restore it in each time it is needed. This rather strange arrangement has arisen by historical accident, a more systematic method is described in the section on Duplication. \subsection{Restore All} Bindings: {\hspace{0.4 in}} All Terminals: Function Keypad 7 This restores all the deleted lines to above the current line, leaving the cursor in the same place. The command requires confirmation by pressing Y after issuing the command. \subsection{Undo Erasure} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-U This inserts the last package from the character bin before the cursor. \section{Admin} The following miscellaneous commands manipulate the editor state. \subsection{Close Edit} Bindings: {\hspace{0.4 in}} All Terminals: Keypad , This causes the main buffer to be written out to the file name specified on the command line. If any other buffers have been modified prompts appear to ask whether or not to write each one back. Setting the WRITE BACK option to NO prevents this. The command line qualifier READ suppresses the writing out of any buffer, allowing edits free from fear of accidental damage. Normally the edit can only be closed while in buffer MAIN, but setting the option FORBID EXIT to NO allows the edit to be closed from any buffer. \subsection{Abort Edit} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-Y This causes the edit to be abandoned completely. {\hspace{0.2 in}} After issuing the command a prompt saying "Do you really want to abort? (Y/N)" appears. Typing either Y or Ctrl-Y in response to this aborts the edit, anything else returns to the edit. The command line qualifier NOCONFIRM removes the safety net. Normally the edit can only be aborted while in buffer MAIN, but setting the option FORBID EXIT to NO allows the edit to be closed from any buffer. \subsection{Interact} Bindings {\hspace*{1.4 in}} VT220: Help \\ {\hspace*{1.4 in}} All Other Terminals: Keypad - This terminal performs various house keeping functions, which are selected by typing the first letter of the appropriate menu entry. \subsubsection{Profile Operations} This presents the option of either Setting the options of this current edit from a file, or Dumping the currently set options into a file for later use. Profile files are ordinary text files and are suitable for editing. See the section on Profile Files for more details. \subsubsection{Keyboard Operations} This presents the option of either Setting up the key to command mapping from a file or Dumping the current mapping into a file for later use. Note that the keyboard file is a binary file and is not suitable for editing. Note also that keyboard files are generally terminal specific as most terminals feature some keys that other terminals do not have, which is the reason for having keyboard files in the first place! \subsubsection{Set Modes} This allows the interactive manipulation of the profile options. A list of the options is displayed and the Up and Down Arrow keys can be used to select which option to change. For the YES and NO options either Y, N or D will change the value. D returns to the default setting. For the numeric parameters, numbers may be typed, terminated with RETURN. Pressing RETURN goes back to the edit. For a complete list of Profile Options, see the section on Profile Files. \subsubsection{Files} This prompts "File Spec: ". If RETURN is pressed in response to this the files in the current directory will be listed, in a system specific manner. If a file specification is given, then only the files corresponding to this will be listed. Bugs: On APM: Wild cards are not supported, the only valid file spec is a directory name. On UNIX: This facility is not supported. \subsubsection{Display Keys} This allows a display of what keys are mapped to what functions. The classes of keys described in the section Keys can all be called up. Pressing RETURN goes back to the edit. \subsubsection{Operating System Specifics} All operating systems have their peculiarities and IE provides some facilities that are dependent on these. \subsubsection{Under VAX/VMS} Notify This allows the user to send broadcasts to other users, it prompts for first the user name or the intended recipient, and then for the message. \subsubsection{On the APM} Quote Password This allows the user to quote a password to the filestore, enabling access to other directories. \subsubsection{On VAX/UNIX} None at present. \subsection{Define Key} Bindings: {\hspace{0.4 in}} All Terminals: Keypad Enter This key is used to bind functions to keys. It prompts for the key to be defined and then provides a variety of options: \subsubsection{Letter} This prompts for the letter that the key is to map to. This command can be used for binding the TAB key to the ASCII HT character by typing the TAB key to the "Press Letter: " prompt. It is also possible to move the letters around the keyboard if you do not like the terminal's normal arrangement. \subsubsection{Command} This allows the binding of keys to commands. Note that ANY key, including the letters, can be bound to a command. A large menu of all the commands is presented divided up into sections similar to those in this manual. The four cursor keys can be used to select the desired command, with movement wrapping at the edges of the menu. Pressing RETURN asssigns the command that is highlighted to the key. Pressing Ctrl-Y leaves the key Undefined. \subsubsection{K and Macro} This allows for sequences of keystrokes to be bound to one key. There are two methods of doing this. The first is the KEYBOARD MACRO, selected by K. Once this has been selected the user performs the edit that is to be stored just as it would be done normally, and any changes will happen. When the sequence is finished issue the Define Key command again to indicate termination. The second is an older and no longer recommended method for doing anything other than binding keys to simple texts. The mapping for the macro is prompted for and must be typed on the message line. \subsubsection{Query} This prints out the current key binding on the message line. \subsection{Panic!} Bindings {\hspace*{1.3 in}} VT220: PF1 PF1 \\ {\hspace*{1.3 in}} All Other Terminals: ESC ESC This resets all terminal modes, re-enables the keypad and redraws the screen. In case of corruption or using the terminal on another system in the middle of an edit. \subsection{Redraw} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-R This redraws the screen should it become corrupt. \subsection{Clear Broadcast} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-C This command is only useful on VAX/VMS systems, where broadcast messages are displayed on the top line of the window, in the Broadcast Window. This command cancels the broadcast window and returns the line to useful editing service. \subsection{Repeat Command} Bindings {\hspace*{1.3 in}} VT220: Do \\ {\hspace*{1.3 in}} All Other Terminals: Ctrl-N This prompts for a command string, which should be typed in as if it were being used to perform an edit. This is terminated with RETURN, if you wish to include RETURN keys in the repeated command, use Ctrl-P before them. After this is entered the prompt "Times: " appears an either a *, meaning "until it fails" or a number may be typed here. The command is executed that many times. Repeat executions may be interrupted using Ctrl-C. This is not an IE command but an operating system interrupt. On VAX/VMS systems it is echoed CANCEL in feature mode. \subsection{NoOp} Bindings {\hspace*{1.4 in}} VT220: Ctrl-S and Ctrl-Q \\ {\hspace*{1.4 in}} All Others Terminals: N/A This command is "No Operation", and is provided to bind to keys which you type accidentally a lot and you do not want to have any effect. Setting them to Undefined will result in the terminal bell being sounded when they are pressed. \subsection{Debug} Binding: {\hspace{0.5 in}} All Terminals: Ctrl-\ This is a magic command used by the editor maintainers. Mere mortals will not be able to use it, or even bind keys to it. \subsection{Shell Escape} Binding: {\hspace{0.3 in}} All Terminals: Ctrl-Z This suspends the editor, allowing the user to perform other operations and then return to the edit. This is not supported on VAX/VMS. \subsection{Shell Buffer} Binding: {\hspace{0.3 in}} All Terminals: Ctrl-D This uses the contents of the current buffer as a "shell script" or command file on the host system. {\hspace{0.3 in}} It is possible to specify parameters to the script, and a name for an output buffer. If a name is given, then the output that would go to the terminal is sent to a buffer of that name, otherwise the output is sent to the terminal. This is not supported on VAX/VMS. \section{Duplication} IE uses the concept of a COPY POSITION for moving and copying lines about a buffer, or between buffers. The COPY POSITION is a buffer independent marker. To use the facilities, set the COPY POSITION on the line below where the insertion is to take place and then move back to the source position. \subsection{Set Copy Position} Bindings {\hspace*{1.1 in}} Visual 200: CP \\ {\hspace*{1.1 in}} Visual 55: F11 \\ {\hspace*{1.1 in}} Wyse 75: PF3 \\ {\hspace*{1.1 in}} VT100: PF3 \\ {\hspace*{1.1 in}} VT220: PF3 This sets the COPY POSITION on to the current line. \subsection{Move Line} Bindings: {\hspace{0.4 in}} All Terminals: Function Keypad 5 This transfers the current line to above the COPY POSITION. The cursor moves to the next line at the same horizontal position. \subsection{Duplicate Line} Bindings: {\hspace{0.4 in}} All Terminals: Ctrl-T This duplicates the current line to above the COPY POSITION. The cursor moves to the next line at the same horizontal position. \section{Character Operations} The following commands operate on the characters in a line \subsection{Lower Case} Bindings {\hspace*{1.1 in}} Visual 200: F4 \\ {\hspace*{1.1 in}} Visual 55: F5 \\ {\hspace*{1.1 in}} Wyse 75: F5 \\ {\hspace*{1.1 in}} VT100: F5 \\ {\hspace*{1.1 in}} VT220: F12 This converts the character under the cursor from UPPER CASE to lower case. The cursor is then moved to the right. This command has no effect at the end of lines, but it performs the cursor move on characters that are not letters \subsection{Upper Case} Bindings {\hspace*{1.1 in}} Visual 200: F5 \\ {\hspace*{1.1 in}} Visual 55: F6 \\ {\hspace*{1.1 in}} Wyse 75: F6 \\ {\hspace*{1.1 in}} VT100: F6 \\ {\hspace*{1.1 in}} VT220: F11 This converts the character under the cursor from lower case to UPPER CASE. The cursor is then moved to the right. This command has no effect at the end of lines, but it performs the cursor move on characters that are not letters \subsection{Flip Case} Bindings {\hspace*{1.1 in}} Visual 200: F6 \\ {\hspace*{1.1 in}} Visual 55: F7 \\ {\hspace*{1.1 in}} Wyse 75: F7 \\ {\hspace*{1.1 in}} VT100: F7 \\ {\hspace*{1.1 in}} VT220: F13 This converts the character under the cursor from lower case to UPPER CASE or from UPPER CASE to lower case. The cursor is then moved to the right. This command has no effect at the end of lines, but it performs the cursor move on characters that are not letters \subsection{Swap About} Bindings {\hspace*{1.1 in}} Visual 200: F7 \\ {\hspace*{1.1 in}} Visual 55: F8 \\ {\hspace*{1.1 in}} Wyse 75: F8 \\ {\hspace*{1.1 in}} VT100: F8 \\ {\hspace*{1.1 in}} VT100: F14 This command swaps the two letters before the cursor around. This is useful for correcting typing mistakes like: {\hspace*{0.2 in}} Hosue {\hspace{0.7 in}} -$>$ {\hspace{0.4 in}} House In this case the cursor would be positioned on the 'e'. This command has no effect if it appears at the start of the line, or one character in on the line. \subsection{Justify Line} Bindings: {\hspace{0.4 in}} NO DEFAULT BINDING This command inserts spaces to justify the current line between the settings of LEFT MARGIN and RIGHT MARGIN. If the line is too long, then the line is unaffected. \section{Markers} Markers are a method of keeping track of places within a buffer. Markers are buffer specific; each buffer has its own list of markers. \subsection{Set Marker} Bindings {\hspace*{1.1 in}} Visual 200: F8 \\ {\hspace*{1.1 in}} Visual 55: F9 \\ {\hspace*{1.1 in}} Wyse 75: F9 \\ {\hspace*{1.1 in}} VT100: Function PF3 \\ {\hspace*{1.1 in}} VT220: Function PF3 This prompts "Set Marker: " and the name of the marker, should be typed after this. The current line is then tagged with that name. Names may be reused, with the old definitions being replaced. \subsection{Jump to Marker} Bindings {\hspace*{1.1 in}} Visual 200: F9 \\ {\hspace*{1.1 in}} Visual 55: F10 \\ {\hspace*{1.1 in}} Wyse 75: F10 \\ {\hspace*{1.1 in}} VT100: Function PF4 \\ {\hspace*{1.1 in}} VT220: Function PF4 This causes a list of markers and the lines to which they are attached to be displayed, and then the Up Arrow or Down Arrow keys can be used to select which marker to jump to, then press RETURN. Alternatively the name of the marker can be typed. If no markers exist an error message is displayed. Bugs: If more than about 20 markers exist, not all are displayed. \section{Buffers} As mentioned in the introductory sections, files are stored as buffers in IE. The first file edited, given on the command line, is stored in a buffer called MAIN. However it is possible to load other files and edit them concurrently. When an edit is Closed the user is asked whether to write back each modified buffer. This can be prevented by setting the WRITE BACK option to NO. \subsection{Select Buffer} Bindings {\hspace*{1.1 in}} Visual 200: F10 \\ {\hspace*{1.1 in}} Visual 55: Ctrl-S \\ {\hspace*{1.1 in}} Wyse 75: F13 \\ {\hspace*{1.1 in}} VT100: Ctrl-S \\ {\hspace*{1.1 in}} VT220: Select This displays a list of buffers and the names of the files they were loaded from. The Up Arrow or Down Arrow keys can be used to select the desired buffer, then press RETURN to enter it. Alternatively the name of the buffer can be typed. Editing is resumed at the point the buffer was left at. Bugs: More than about 20 buffers are not displayed correctly. \subsection{Get Buffer} Bindings {\hspace*{1.1 in}} Visual 200: F11 \\ {\hspace*{1.1 in}} Visual 55: Ctrl-G \\ {\hspace*{1.1 in}} Wyse 75: F14 \\ {\hspace*{1.1 in}} VT100: Ctrl-G \\ {\hspace*{1.1 in}} VT220: F18 This command is used to load a file into a buffer. {\hspace{0.2 in}} The prompt "Buffer Name: " appears first. This is the name for use in Select and Include Buffer. {\hspace{0.2 in}} Either you can invent a new name, or you can use the name of the file to be loaded. If the buffer name is given as the name of a file that exists then the prompt "File Name ($<$FILE$>$): " appears. Pressing RETURN in response to this results in $<$FILE$>$ being loaded, where $<$FILE$>$ is the expanded version of the buffer name. If the buffer name is not a valid file name, however, the prompt is simply "File Name: " and pressing RETURN returns to the edit. Giving a file name results in that being loaded. If the given file does not appear a report is given and the prompt is reissued. To create an empty buffer use the system specific null device name as the file name. On VAX/VMS this is NL:, on the APM it is :N and on VAX/UNIX it is /dev/null. \subsection{Put Buffer} Bindings {\hspace*{1.1 in}} Visual 200: F12 \\ {\hspace*{1.1 in}} Visual 55: Ctrl-O \\ {\hspace*{1.1 in}} Wyse 75: F15 \\ {\hspace*{1.1 in}} VT100: Ctrl-O \\ {\hspace*{1.1 in}} VT220: F19 This command is used to output the current buffer into a file. Applications of this are keeping backup copies or producing extracts. The prompt "File name for output (from $<$file$>$): " will appear, where $<$file$>$ is the name of the file that the buffer was read from. If the buffer was created then the part in brackets is omitted. {\hspace{0.2 in}} This is NOT the default file name for output as this might case accidental overwriting of files. If RETURN is pressed at this point the edit continues unaffected. {\hspace{0.2 in}} If a valid file name is given, followed by RETURN the buffer will be writen to that file. On VAX/VMS systems all that is needed to write the buffer back to the source file is to give the file name [], which results in all the fields being filled in by default. \subsection{Include Buffer} Bindings {\hspace*{1.1 in}} Visual 200: F13 \\ {\hspace*{1.1 in}} Visual 55: Ctrl-] \\ {\hspace*{1.1 in}} Wyse 75: F16 \\ {\hspace*{1.1 in}} VT100: Ctrl-] \\ {\hspace*{1.1 in}} VT220: F20 This displays a list of buffers and the names of the files they were loaded from. The Up Arrow or Down Arrow keys can be used to select the desired buffer, then press RETURN to enter it. Alternatively the name of the buffer can be typed. The buffer that is selected is copied into the current buffer above the current line. If the current buffer is selected the command performs no function, so it cannot be used to include a buffer within itself. Bugs: More than about 20 buffers are not displayed correctly. \section{Profile Files} It is impossible to please everyone, and very hard to please anyone! To this end IE has a number of options that can be set, either interactively, or at the start of each edit via the Profile File mechanism. These can either be set up permanently, or set dynamically either via the Interact/Profile Operations command, or by the PROFILE=$<$file$>$ command line qualifier. \subsection{The File Itself} Profile files are simple text files, containing statements like: {\hspace*{0.2 in}} Show TAB = Yes \\ {\hspace*{0.2 in}} TAB Width = 2 and comments, either introduced with ! or \{, and terminated at the end of the line. Some options can be given the boolean values of YES or NO, whereas some take numbers. \subsubsection{SHOW TAB} Default: NO If this is set to NO then the positions that ASCII HT characters fill on the screen are occupied with spaces. If it is set to yes they are filled with a graphics character: on the Visual 200 and Visual 55 a small double dot character, on the others it is a composite HT character. \subsubsection{AUTO INDENT} Default: YES This controls whether new lines are automatically filled with spaces out to the level of the surrounding lines. This is most useful set to YES for computer program writing, but is best at NO for plain text. \subsubsection{AUTO LINE BREAK} Default: NO This is used with the the RIGHT MARGIN option to allow the typing of plain text without the necesity of pressing RETURN at the ends of lines. When it is switched to YES lines are automatically broken at the start of the last word on the line. For editing programming language files this should be NO \subsubsection{JUSTIFY} Default: NO Used in conjunction with AUTO LINE BREAK at YES this causes lines typed in to be padded with spaces to file the space between LEFT MARGIN and RIGHT MARGIN. \subsubsection{CASE SIGNIFICANCE} Default: NO This determines whether the case of a search string matters, if it is set to YES an exact match between the string and the text is required. \subsubsection{SEARCH BEFORE REPLACE} Default: YES This controls the behaviour of the Change Text command. With the deafult value of YES, then the Change Text command prompts for a search string and a replacement string. Setting the SEARCH BEFORE REPLACE option to NO means that the command only needs a replacement string and replaces the last Search or Backwards Search string. \subsubsection{FREE CURSOR} Default: NO This affects the horizontal movement of the cursor when it is moved vertically. If FREE CURSOR is set to YES then the cursor will move straight up and down without being constrained to be within the text, which is the case with the default value of NO. \subsubsection{WRITE BACK} Default: YES This affects the fate of buffers when the edit is closed. If WRITE BACK is set to NO then the contents of the buffers is thrown away if changed. The normal value of YES means that the user will be prompted per changed buffer as to whether it should be written back or not. \subsubsection{BEEP MUTE} Default: NO This is a bizarre option put in at the request of Anti-Noise- Pollutionists. Normally IE beeps on errors, but if this option is set to YES it is as quiet as the tomb. \subsubsection{FORBID EXIT} Default: YES The default state of this option prevents edits from being closed or aborted from any buffer but the main one. \subsubsection{WIGGLE MODE} Default: NO This controls the horizontal motion of the cursor while it moves vertically. If the line it moves to is shorter, then the cursor is constrained to within the text on that line, but will jump back to the further out position when moved agin onto a longer line. \subsubsection{WRAP SEARCH} Default: NO This controls the behaviour of the Search and Backwards Search commands. If the text is not found in the normally searched section of the text, the search wraps round the end of the buffer and works towards the starting point. If both WRAP SEARCH and BACK SEARCH are enabled, WRAP SEARCH takes place. \subsubsection{BACK SEARCH} Default: NO This controls the behaviour of the Search and Backwards Search commands. If the text is not found in the normally searched section of the text, the other half is search backwards from the starting point. If both WRAP SEARCH and BACK SEARCH are enabled, WRAP SEARCH takes place. \subsubsection{JOIN AT END} Default: NO This controls the behaviour of the Erase Char command at the end of lines. In the default state the command has not effect, but if the option is set to Yes then the following line is joined onto the current one. \subsubsection{TAB WIDTH} Default: 3 This controls the width of the internal TAB settings, as used by the Insert TAB and Back TAB commands. \subsubsection{BEEP COLUMN} Default: 75 Like a typewriter IE gives a beep to warn oh the end of the line approaching. {\hspace{0.2 in}} This option specifies the column number at which to go beep. \subsubsection{LEFT MARGIN} Default: 1 This is used when AUTO INDENT is NO to determine where to put the cursor when starting a new line. \subsubsection{RIGHT MARGIN} Default: 80 This is used by the AUTO LINE BREAKing and JUSTIFYing facilities to determine where to break the line. \subsubsection{JOURNAL FREQUENCY} Default: 0 This controls the frequency of Journalising. If it is set to 0 then journalising is disabled. See the section on Journalising for more details. \subsubsection{WINDOW TOP} Default: 0 This tells the editor which line to use as the top of the display window. \subsubsection{WINDOW BOTTOM} Default: 23 This tells the editor which line to use as the bottom of the display. On the APM the default value is set from the operating system height setting. \subsubsection{EOF MARKER} Default: Terminal Dependent Cascade sells things like personalised golf tees, pound coin holders, etc. In this rather silly vain IE allows the user to change the symbol used at the end of buffers. This string is TERMINAL DEPENDENT, as it is output, raw, in the terminals graphics mode. If you are a terminal oriented hacker then go right ahead and have a different marker for each profile file! Control characters are NOT displayed. \subsection{Setting up your profile under VMS} There are three ways of telling IE about where to find your profile file: Qualifier \\ {\hspace*{1.0 in}} The qualifier /PROFILE=$<$file name$>$ can be used at \\ {\hspace*{1.0 in}} each edit. It overrides other methods. Note that \\ {\hspace*{1.0 in}} /NOPROFILE can also be useful if there is a problem \\ {\hspace*{1.0 in}} with the defined profile file. Logical Name \\ {\hspace*{1.0 in}} Defining the logical name IE\_PROFILE to point to your \\ {\hspace*{1.0 in}} profile file is a method that avoids typing it with \\ {\hspace*{1.0 in}} every command. It is also independent of default \\ {\hspace*{1.0 in}} directory. Default File \\ {\hspace*{1.0 in}} If a file called PROFILE.IE exists in the current \\ {\hspace*{1.0 in}} default directory then this is used, unless either of \\ {\hspace*{1.0 in}} the two previous methods have been employed. This is \\ {\hspace*{1.0 in}} useful if you flit from directory to directory and \\ {\hspace*{1.0 in}} perform different activities in each, for example \\ {\hspace*{1.0 in}} programming and documenting. \subsection{Setting up your profile on the APM} Qualifier \\ {\hspace*{1.0 in}} The -PROFILE=file qualifier can be used to specify the \\ {\hspace*{1.0 in}} profile file for an edit. All edits after this will \\ {\hspace*{1.0 in}} employ the same profile. Default File \\ {\hspace*{1.0 in}} If a file called PROFILE.IE exists in the current \\ {\hspace*{1.0 in}} directory then that is used, or if not a file called \\ {\hspace*{1.0 in}} PROFILE.IE in your login directory will be used. \subsection{Setting up your profile under UNIX} Qualifier \\ {\hspace*{1.0 in}} The -PROFILE=$<$file$>$ switch can be used to specify the \\ {\hspace*{1.0 in}} profile for a one off edit. Default File \\ {\hspace*{1.0 in}} If a file called .IE\_PROFILE exists in your working \\ {\hspace*{1.0 in}} directory this is used. If not, then the file \\ {\hspace*{1.0 in}} .IE\_PROFILE in your login directory is used. \section{Keyboard Files} Keyboard files are used to map terminal keys to editor functions. Each terminal type must have its own keyboard file. In addition users can tailor their keyboard files, and then keep them. These are binary data files and as such are not suitable for editing, they should be created using the Dump Keyboard command within the Interact command. \subsection{Setting up your own keyboard file under VAX/VMS} Qualifier \\ {\hspace*{1.0 in}} The command line qualifier /KEYBOARD=$<$file$>$ can be used \\ {\hspace*{1.0 in}} to specify a one off keyboard file usage. Logical Name \\ {\hspace*{1.0 in}} If you only ever use one terminal then the logical name \\ {\hspace*{1.0 in}} IE\_KEYBOARD can point to the keyboard file. If however \\ {\hspace*{1.0 in}} you use different terminals a further mechanism is \\ {\hspace*{1.0 in}} provided. {\hspace*{1.0 in}} IE uses the 3-L terminal type support to determine \\ {\hspace*{1.0 in}} what model is in use. This is an extension to the \\ {\hspace*{1.0 in}} existing VMS terminal types that allows "oid" terminals \\ {\hspace*{1.0 in}} to be fully supported. For example a Visual 200 is a \\ {\hspace*{1.0 in}} VT52oid terminal, so VMS believes that it is a VT52. \\ {\hspace*{1.0 in}} Defining the logical TT\_MAP\_VT52 to be VISUAL200 tells \\ {\hspace*{1.0 in}} IE that all VT52 terminals are in fact Visual 200s on \\ {\hspace*{1.0 in}} this system. Similarly with TT\_MAP\_VT100 set to \\ {\hspace*{1.0 in}} WY75. For standard DEC terminals, such as VT100s, \\ {\hspace*{1.0 in}} no TT\_MAP\_ name is set up. {\hspace*{1.0 in}} To set up a keyboard file, the terminal map name is \\ {\hspace*{1.0 in}} used in another logical name to point to the keyboard \\ {\hspace*{1.0 in}} file. For the Visual 200 example the name would be \\ {\hspace*{1.0 in}} IE\_VISUAL200\_KEYBOARD. The complete list is as \\ {\hspace*{1.0 in}} follows: {\hspace*{1.2 in}} IE\_VISUAL200\_KEYBOARD \\ {\hspace*{1.2 in}} IE\_VISUAL55\_KEYBOARD \\ {\hspace*{1.2 in}} IE\_WY75\_KEYBOARD \\ {\hspace*{1.2 in}} IE\_VT100\_KEYBOARD \\ {\hspace*{1.2 in}} IE\_VT220\_KEYBOARD Default File \\ {\hspace*{1.0 in}} If the file KEYBOARD.KIE exists in the current \\ {\hspace*{1.0 in}} directory then this is used. \subsection{Setting up your own keyboard file on the APM} Qualifier \\ {\hspace*{1.0 in}} The command line qualifier -KEYBOARD=$<$file$>$ can be used \\ {\hspace*{1.0 in}} to specify the keyboard file once. All subsequent \\ {\hspace*{1.0 in}} edits will use this keyboard file. Default File \\ {\hspace*{1.0 in}} The file KEYBOARD.KIE in the current directory will be \\ {\hspace*{1.0 in}} used, or if that does not exist the file KEYBOARD.KIE in \\ {\hspace*{1.0 in}} the login directory. \subsection{Setting up your own keyoard file under UNIX} Qualifier \\ {\hspace*{1.0 in}} The command line switch -KEYBOARD=$<$file$>$ can be used to \\ {\hspace*{1.0 in}} give a one off keyboard file setting. Environmental Variable: \\ {\hspace*{1.0 in}} The environmental variable IE\_KEYBOARD is the name of \\ {\hspace*{1.0 in}} a directory which contains keyboards files called by \\ {\hspace*{1.0 in}} the terminal mnemonic: V200, VT220, WY75 etc. \section{Journalising} It is a sad fact of computer life that things will always gow rong (sic). Various things can be at fault: lightning, disk crashes, operating systems failures, roadworks digging up networks or even bugs in the editor. When any such nasty event takes place there is potential for loosing edits, so IE provides a method of recovering an edit. This is called journalising, and when enabled a record of all the commands and text typed to the editor is stored, and can be played back later. To switch journalising on the option JOURNAL FREQUENCY should be set to a non-zero value. {\hspace{0.2 in}} The number you choose is in fact the number of key strokes that are buffered up before writing them out to disk. If the value 1 is used then ever key stroke will be kept, however this will have a very high serious effect on performance with long pauses between key strokes on a loaded system. A typical value is 16 or 32, which means that an edit will be recoverable up to worst 16 or 32 key strokes behind. When an edit is closed normally the journal file is deleted, but on an abort it is kept so that if you REALLY did not mean to say Ctrl-Y and then Y you can recapture the edit. The command line qualifier RECOVER is used to rerun the edit, but it is a good idea to perform some system dependent wizardry first. \subsection{Recover under VAX/VMS} The logical name IE\_JOURNAL gives the name of the journal file, which is normally SYS\$LOGIN:JOURNAL.IE. If you wish to move this redefine the logical name, but it is ESSENTIAL that there is no version number on the file name. The command line qualifier /JOURNAL=$<$file$>$ can be used to specify a one off journal file. Before invoking the recover edit it is a good idea to copy the journal file to a safe place: {\hspace*{0.2 in}} \$ COPY IE\_JOURNAL;2 Safe\_Directory:SAVED.IEJ It is very easy to make mistakes recovering edits! Notice that the ;2 is ESSENTIAL after the IE\_JOURNAL in this copy statement Now use EXACTLY the same command line for the edit as before, except add the qualifier /RECOVER. A check is made to see if the source file, profile file and keyboard file are the same as before to prevent running the wrong journal on a file. If you do actually want to use a different configuration use the /IGNORE qualifier to do this. If the first recovery does not succeed for some reason, copy the saved journal back to the original site: {\hspace*{0.2 in}} \$ COPY Safe\_Directory:SAVED.IEJ IE\_JOURNAL;2 and try again. You will probably have figured out what the difference was. \subsection{Recover on the APM} The journal file is normally kept in a file IE\_JOURNAL in the current directory, but the command line qualifier -JOURNAL=$<$file$>$ can be used to change this. The new value will be used for each edit after the first automatically. Before invoking the recover edit it is a good idea to copy the journal file to a safe place: {\hspace*{0.2 in}} \} T IE\_JOURNAL/SAVED\_JOURNAL It is very easy to make mistakes recovering edits! Now use EXACTLY the same command line for the edit as before, except add the qualifier -RECOVER. A check is made to see if the source file, profile file and keyboard file are the same as before to prevent running the wrong journal on a file. If you do actually want to use a different configuration use the -IGNORE qualifier to do this. If the first recover does have problems the copy the saved version back to the original file: {\hspace*{0.2 in}} \} T SAVED\_JOURNAL/IE\_JOURNAL and try again - you will probably have worked out what was wrong last time. \subsection{Recover under UNIX} This is not yet supported. \subsection{Problems with journalising} The two items are not so much bugs as problems inherent to the concept of journalising. Why not use a better scheme you cry, well suggest one please. \subsubsection{Multiple Users} If several people are logged in as the same user or are working in the same directory then each one, except the first, will have to make provision for using a differently named journal file. \subsubsection{Writing out buffers} If the Put Buffer command is used to write buffers back on top of the original file all hell will be let loose if you try and rerun the edit as some changes will already have been made. This is normally only used as a backup method. If you really do want the belt and braces of both journalising and backup copies, put the backups somewhere else. \section{Calling IE from programs} IE is an \%external \%routine and may be called from other programs that need to perform editing. It is also possible to get IE to display a message in the Broadcast Window when the edit starts up - very useful for displaying error reports when calling IE from a compiler. The following declarations are in an include file: \small\tt \begin{verbatim}%constant %integer abort ! If the user aborts his edit or a fatal condition arises IE ! %signals abort. %constant %string (15) Version ! This is the version code of the editor that you will be using. %constant %integer Silent %constant %integer Confirm %constant %integer Deaf %constant %integer Reset Heap %constant %integer Recover Edit %constant %integer Ignore Differences %constant %integer Adopt Defaults ! These are options for use when calling IE ! Silent - suppresses the printing file loading/writing messages ! Confirm - asks if the user really wants to before Aborting ! Deaf - suppresses any broadcast messages appearing !* Reset Heap - this causes IE to restore its claimed heap space * !* at the end of an editing session. When used stand alone * !* it does not bother but any other program using the heap * !* or likely to call the editor more than once MUST supply * !* this option. * ! Recover Edit \ ! Ignore Differences | These are used for recovering edits ! Adopt Defaults / %external %routine %spec IE editor %alias "IE_EDITOR" %c (%string (127) in file, out file, %integer window top, window bottom, %integer %name start line, start pos, %string (127) profile, keyboard, %integer options) ! This is the editor itself, the parameters aree as follows: ! In File - The source file, creates output if null ! Out File - The output file, read only if null ! Window Top - Top line of the screen to use 0 to 12 ! Window Bottom - Bottom line of the screen to use ! Start Line - Line of file to start on, returns line at end (starts at ! line 1. ! Start Pos - Column of line to start on, returns position at end ! (starts at 1) ! Profile - Profile file - no profile if null ! Keyboard - Keyboard File - this MUST be filled in. ! Options - Bits set as above %external %string (255) %function %spec Default Profile %alias "IE_DEF_PRO" %external %string (255) %function %spec Default Keyboard %alias "IE_DEF_KEY" ! These provide values for the Profile and Keyboard parameters for ! IE as they would be filled in by the editor called as a command. Terminal model control: %external %integer %function %spec Default Terminal %alias "IE_DEF_TER" %external %byte %spec Terminal Model %alias "IE_TT_MODEL" ! The variable Terminal Model must be assigned the value of Default ! Terminal, or one of the following values: %constant %integer Visual 200 %constant %integer Visual 55 %constant %integer VT100 %constant %integer VT220 %constant %integer Freedom 100 %constant %integer WY 50 %constant %integer WY 75 %external %routine %spec set up terminal %alias "IE_SET_UP_TERMINAL" ! This routine must be called before calling IE. %external %routine %spec reset terminal %alias "IE_RESET_TERMINAL" ! This routine must be called after calling IE. %external %string (255) %spec Journal File %alias "IE_J_FILE" %external %string (255) %function %spec Default Journal %alias "IE_DEF_JOU" ! If journalising is to be used the string must be filled in with a ! valid file name, normally provided by this routine. %external %routine %spec Receive Broadcast %alias "IE_BROADCAST" %c (%string (255) Message) ! If this is called before IE Editor itself the Message will appear as a ! broadcast message at the top of the screen when the edit starts up. ! Very useful when integrating the editor into a compiler. %external %integer %spec Main Buffer Changed %alias "IE_CHANGED_FLAG" ! This variable is set to non-zero if the main buffer of the edit ! has been altered. %record %format Preload fm (%string (32) Buffer Name, %string (255) File Name, %record (Preload fm) %name Next) %external %record (Preload fm) %name %spec Preloads %alias "IE_PRELOADS" ! It is possible to have IE automatically preload buffers. To do ! this create a list of Preload fm records and point this name at ! them. \end{verbatim}\rm \normalsize \subsection{On VAX/VMS} The include file is in ECS\_TEXT:[IE]IE.INC, and it is necesary to link with ECS\_TEXT:[IE]IE/Lib. \subsection{On the APM} The file INC:IE.IMP provides the above declartions. All the routines are already Installed. \subsection{On the APM} It is not part of the UNIX karma to call editors as subroutines, rather they are envoked as subprocesses, and the user can select which editor to use. \section{Keypad Layouts} The following graphical plans are provided as a help to remembering the location of the various functions in the standard keyboard definitions. \subsection{Visual 200} {\hspace*{1.2 in}} +------------+-------------+------------+ \\ {\hspace*{1.2 in}} |Restore All |Overwrite Mod|Search Again| \\ {\hspace*{1.2 in}} | {\hspace{0.8 in}} | {\hspace{0.9 in}} | {\hspace{0.8 in}} | \\ {\hspace*{1.2 in}} |Insert Line |Insert Mode |Search {\hspace{0.4 in}} | \\ {\hspace*{1.2 in}} +------------+-------------+------------+ \\ {\hspace*{1.2 in}} |Restore Line|Move Line {\hspace{0.3 in}} |Change Again| \\ {\hspace*{1.2 in}} | {\hspace{0.8 in}} | {\hspace{0.9 in}} | {\hspace{0.8 in}} | \\ {\hspace*{1.2 in}} |Delete Line |Delete Char |Change Text | \\ {\hspace*{1.2 in}} +------------+-------------+------------+ \\ {\hspace*{1.2 in}} |Erase To End|Delete To End|Start Of Pag| \\ {\hspace*{1.2 in}} | {\hspace{0.8 in}} | {\hspace{0.9 in}} | {\hspace{0.8 in}} | \\ {\hspace*{1.2 in}} |End Of Line |End Of File |End Of Page | \\ {\hspace*{1.2 in}} +------------+-------------+------------+ \\ {\hspace*{1.2 in}} | {\hspace{0.8 in}} |Abort Edit {\hspace{0.2 in}} |Scroll Up {\hspace{0.2 in}} | \\ {\hspace*{1.2 in}} | {\hspace{0.8 in}} | {\hspace{0.9 in}} | {\hspace{0.8 in}} | \\ {\hspace*{1.2 in}} |Start Of Lin|Close Edit {\hspace{0.2 in}} |Scroll Down | \\ {\hspace*{1.2 in}} +------------+------+------+------------+ \\ {\hspace*{1.2 in}} | {\hspace{1.3 in}} | {\hspace{1.3 in}} | \\ {\hspace*{1.2 in}} | {\hspace{1.3 in}} | {\hspace{1.3 in}} | \\ {\hspace*{1.2 in}} |Interact {\hspace{0.7 in}} |Define Key {\hspace{0.6 in}} | \\ {\hspace*{1.2 in}} +-------------------+-------------------+ \subsection{Visual 55} {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore All | {\hspace{0.8 in}} |Search Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Insert Line |Toggle Mode |Search {\hspace{0.4 in}} |Interact {\hspace{0.3 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore Line|Move Line {\hspace{0.2 in}} |Change Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Delete Line |Delete Char |Change Text |Close Edit | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Erase To End|Delete To En|Start Of Pag| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |End Of Line |End Of File |End Of Page | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+ {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{1.7 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{1.7 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Start Of Line {\hspace{0.8 in}} |Scroll Down |Define Key | \\ {\hspace*{0.6 in}} +-------------------------+------------+------------+ \subsection{Wyse 75} {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Delete To St| {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |FUNCTION {\hspace{0.3 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Start Of Fil|Set Copy Poi|Clone Line | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore All |Overwrite Mo|Search Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Insert Line |Insert Mode |Search {\hspace{0.4 in}} |Interact {\hspace{0.3 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore Line|Move Line {\hspace{0.2 in}} |Change Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Delete Line |Delete Char |Change Text |Close Edit | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Erase To End|Delete To En|Start Of Pag| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |End Of Line |End Of File |End Of Page | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+ {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Erase To Start {\hspace{0.7 in}} |Scroll Up {\hspace{0.2 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{1.7 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Start Of Line {\hspace{0.8 in}} |Scroll Down |Define Key | \\ {\hspace*{0.6 in}} +-------------------------+------------+------------+ \subsection{VT100} {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Delete To St| {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |FUNCTION {\hspace{0.3 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Start Of Fil|Set Copy Poi|Clone Line | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore All |Overwrite Mo|Search Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Insert Line |Insert Mode |Search {\hspace{0.4 in}} |Interact {\hspace{0.3 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore Line|Move Line {\hspace{0.2 in}} |Change Again| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Delete Line |Delete Char |Change Text |Close Edit | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Erase To End|Delete To En|Start Of Pag| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |End Of Line |End Of File |End Of Page | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+ {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Erase To Start {\hspace{0.7 in}} |Scroll Up {\hspace{0.2 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{1.7 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Start Of Line {\hspace{0.8 in}} |Scroll Down |Define Key | \\ {\hspace*{0.6 in}} +-------------------------+------------+------------+ \subsection{VT220} {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Delete To St| {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |FUNCTION {\hspace{0.3 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} |Start Of Fil|Set Copy Poi|Clone Line | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore All |Overwrite Mo| {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Insert Line |Insert Mode |Search Again|Restore Line| \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Restore Line|Move Line {\hspace{0.2 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Delete Line |Delete Char |Change Again|Close Edit | \\ {\hspace*{0.6 in}} +------------+------------+------------+------------+ \\ {\hspace*{0.6 in}} |Erase To End|Delete To En|Start Of Pag| {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |End Of Line |End Of File |End Of Page | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} +------------+------------+------------+ {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Erase To Start {\hspace{0.7 in}} |Scroll Up {\hspace{0.2 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} | {\hspace{1.7 in}} | {\hspace{0.8 in}} | {\hspace{0.8 in}} | \\ {\hspace*{0.6 in}} |Start Of Line {\hspace{0.8 in}} |Scroll Down |Define Key | \\ {\hspace*{0.6 in}} +-------------------------+------------+------------+ \section{Trademarks} UNIX is a trademark of AT\&T Bell Laboratories. VAX, VMS, DEC, VT52, VT100, VT220 are trademarks of the Digital equipment corporation. 3-L is a trademark of Lattice Logic Ltd. \vspace{.75in} view:ie printed on 17/02/89 at 11.53 \newpage \tableofcontents \end{document}