UniFLEX® Text Editor
COPYRIGHT © 1984 by
Technical Systems Consultants, Inc.
1 1 1 Providence Road
Chapel Hill, North Carolina 27514
All Rights Reserved
UniFLEX® registered In U.S. Patent and Tradenark Office,
MANUAL REVISION HISTORY
Revision Date Change
A 08/80 Original Release
B 04/81 Added documentation of the f, File is a directory "
error message.
Removed documentation of the "Insufficient
Stack Space" error message.
C 05/84 Updated for MC68000 version.
D 01/86 Fixed errors in the tutorial.
COPYRIGHT INFORMATION
This entire manual is provided for the personal use and enjoyment of the purchaser. Its
contents are copyrighted by Technical Systems Consultants, Inc., and reproduction, in
whole or in part, by any means is prohibited. Use of this program and manual, or any part
thereof, for any purpose other than single end use by the purchaser is prohibited.
DISCLAIMER
The supplied software is intended for use only as described in this manual. Use of
undocumented features or parameters may cause unpredictable results for which Technical
Systems Consultants, Inc. cannot assume responsibility. Although every effort has been
made to make the supplied software and its documentation as accurate and functional as
possible, Technical Systems Consultants, Inc. will not assume responsibility for any
damages incurred or generated by such material. Technical Systems Consultants, Inc.
reserves the right to make changes in such material at any time without notice*
Contents
Preface v
Chapter 1 Calling the Editor
Calling the Editor with No Arguments 1
Calling the Editor with a File Name 1
Calling the Editor with Two File Names 2
Options 2
The 'b' option 2
The 'n' option 3
The 'y' option 3
Chapter 2 UniFLEX Interface
Control Characters in a File 5
Backspace character 5
Escape character 5
Line-delete character 5
Horizontal-tab character 6
Control-D: keyboard signal for end-of-file 6
Control-C: keyboard interrupt 6
Control-\: "quit" signal 6
The Editor's Use of Disk Files 7
Creating a new file 7
Editing an existing file 8
Command Input from a File 8
Fatal Errors 8
Chapter 3 Tutorial 9
Chapter 4 Editor Commands
Using Strings 19
Specifying a Column Number 21
Using the "Don't Care" Character 22
The "Command Repeat" Character 22
Using the "End of Line" Character 22
Using Tab Characters 23
Length of Lines of Text 23
m
Contents
Editor Commands 24
Environment commands
System commands 30
Current line movers
Edit commands 34
Disk commands 43
Chapter 5
Editor Messages
Preface
• •• <g) • • •
This manual describing the UniFLEX Text Editor is divided into five
chapters which include information on how to call the editor; a
description of the interface between the editor and UniFLEX; a tutorial
for those who are not familiar with the capabilities of the editor; a
description of each of the editor commands, with examples; and finally,
an annotated list of the messages that the editor may issue.
The editor is both content-oriented and line-oriented. Lines in the
file being edited may be referenced either by specifying a line number
or by specifying some part of the content of the line. Because the
editor is not screen-oriented, it is not necessary to use a terminal
with the capability to address the cursor directly.
Users who are unfamiliar with the previous versions of this editor (the
stand-alone cassette version and the FLEX™ version) are encouraged to
read the tutorial so as to get a feeling for the operation of the
editor. The tutorial does not describe all of the features of the
editor, but it does provide enough information to permit a user to
perform useful edits. Once familiar with the basics, users should refer
to the editor command descriptions for information on the rest of the
commands .
UniFLEX® registered in U.S. Patent and Trademark Office.
FLEX™ is a trademark of Technical Systems Consultants, Inc.
v
VI
CALLING THE EDITOR
The UniFLEX Text Editor is called with the UniFLEX command
"edit". Arguments may be given to the editor which tell it the
name of the file being edited, the name of the file that is to
contain the revised file, and some editor options. All arguments
are optional. How the editor functions when various arguments
are supplied is described below through examples.
Calling the Editor with No Arguments
Example: edit
When the editor is called with no arguments, it issues a message
that a new file is being created, and then prompts for the
information that is to be put into the file. When the editing
session is terminated (by the "stop" command, for example), the
editor will prompt for the name of the file to which to write the
information. The user responds to this prompt by typing in the
file name, including a UniFLEX path name if necessary. If a
UniFLEX end-of-file signal is typed in response to the prompt for
a file name, all information is discarded and the editing session
is terminated. (See UniFLEX INTERFACE section for more
information on the end-of-file signal.)
Calling the Editor with a. File Name
Example: edit test
If only one file name is given as an argument to the editor, it
is assumed that this is the name of the file that is being
edited. This name may include a UniFLEX path name if one is
necessary to adequately describe the location of the file.
If the file does not exist, it is assumed that a new file having
the specified name is being created. A message stating that fact
is issued, and the editor then prompts for the information to be
stored in the file. When the editing session is terminated, the
information is written to the file.
If the file already exists, the information in it is read into an
edit buffer and a prompt for an editor command is issued. When
the editing session is terminated, the file will contain the
revised information. The file as it was before editing is
preserved in a backup file (unless the 'b' option was specified,
as described later). The name of the backup file is normally the
name of the original file with the characters ".bak" appended to
the end of it. If the original name is too long to accommodate
the additional four characters, the name is truncated and the
- 1 -
II
bak" appended to the shortened name
Calling the Editor with Two File Names
Example: edit test newtest
When the editor is called with two file names, the first file
name is assumed to be the name of the file containing the
information to be edited, and the second name is that of the file
that is to receive the revised information. Both file names may
contain UniFLEX path names if necessary to adequately describe
their locations. If a path name is specified for the first file
name, it is not propagated to the second file name. In the
example, the file "test" is assumed to contain the information
which is to be edited, and the file "newtest" is going to contain
the edited information.
If the first file does not exist, the editor writes a message
indicating that the edit file does not exist, and then terminates
the edit session.
If the second file already exists, a prompt is issued asking for
permission to delete the existing file. (This prompt may be
avoided with the ' y' option, described below.) If a UniFLEX
end-of-file signal is typed in response to this prompt, it is
assumed that the file is not to be deleted, and the editing
session is immediately terminated with no changes having been
made .
Options
Options are specified to the editor by specifying an argument
whose first character is a plus sign (+) . The plus sign is
immediately followed by one or more lowercase letters indicating
the option or options selected. The valid letters are 'b ' , 'a ' ,
and 'y ' . The option letters must be specified with lowercase
letters. The options may be before, after, or intermixed with
file name arguments.
The 'b' option - Do not create a backup file.
Specifying a 'b' as an option tells the editor to not create
a backup file containing the original, unedited,
information.
- 2 -
The 'n' option - Do not initially read the file being edited.
The 'n' option is meaningful only if an existing file is
being edited. Normally, the editor reads the file into
memory so that the information may be manipulated with
editor directives. By specifying 'n' as an option, the
information is not initially read into memory. The user may
then use editor directives to enter new information, either
from the terminal or by reading other files, that will
appear in front of the information in the file being edited.
The "new" command must be used to start the reading of the
edit file. This option is most useful if a large amount of
information is to be entered in front of the data being read
from the file being edited. To insert only a small amount
of information at the front of a file, the "insert" command
may be used.
The 'Y option - Delete any existing copy of the new file or the
backup file.
Specifying 'y' as an option will cause the editor to delete
any existing copy of the backup file (if only one file name
is specified) or the new file (if two file names are
specified), without asking permission from the user. In
effect, the editor assumes that a 'y' response would be
given in response to the prompts: "Delete existing backup
file?", and "Delete existing copy of new file?" so the
prompts are not issued, and the appropriate action is taken
automatically.
If the editor cannot recognize a letter as a valid option, a
message is issued and the editor continues to look for valid
arguments.
Examples of calls including options.
edit test +b
edit test newtest + y
edit +nb test
- 3 -
Uni FLEX INTERFACE
The UniFLEX Text Editor runs only under the UniFLEX Operating
System. The editor therefore follows the conventions of the
operating system with regard to special characters and file
names. UniFLEX file names are treated in the documentation of
the UniFLEX Operating System proper. The special characters and
their effect on the editor are treated in this chapter.
Control Characters in a. File
Normally, the editor allows any character to be in a file,
including control characters. There are some characters,
however, which have special meaning to the operating system and
thus cannot be typed in from the keyboard. The special UniFLEX
characters with which the editor is concerned are:
backspace character (User-definable using "ttyset" program)
escape character
line-delete character (User-definable using "ttyset" program)
horizontal- tab character (control-I)
control-D: keyboard signal for end-of-file
control-: keyboard interrupt
control-\: "quit" signal
Backs pa ce character
The backspace character is used when entering commands and data
to erase the last character typed. This backspace character may
be changed by the user by calling the "ttyset" utility program.
Escape character
The ASCII escape character is used by the UniFLEX Operating
System as a method of temporarily stopping and resuming the
printing of information at the terminal. A more detailed
description of the function of the escape character is described
in the documentation of the UniFLEX Operating System proper.
Here, it suffices to say that it is not possible to enter the
escape character into a file using the editor.
Line-delete character
The line-delete character is used when entering commands and data
to delete the line currently being typed. This line-delete
character may be changed by the user by calling the "ttyset"
utility program.
- 5 -
Horizontal-tab character
This tab character refers to the ASCII horizontal-tab character
(HT), a hexadecimal 09. This is not the same as the tab
character which can be defined within the editor. The editor
itself is not concerned with the HT character, but UniFLEX may
perform special handling when this character is typed or
displayed. The action of UniFLEX on detecting this character is
described elsewhere in the documentation of UniFLEX proper. It
suffices to note that this HT character is treated as a single
character by the editor, regardless of how it is displayed on the
terminal .
Control-D: keyboard signal for end-of-file
When control-D is typed from the keyboard, the editor interprets
this as an ,f end-of-f ile". The action taken by the editor on
detecting this character depends on what the editor was expecting
as input. If a control-D is typed in the middle of a command, it
has the same effect as a line-delete character. If it is typed
as the first character in response to a request for a command
(that is, in response to the # prompt), it is treated as a "stop”
command. A control-D typed while inserting lines has the same
effect as typing the line-delete character followed by the line
number character and a carriage return. That is, it cancels the
current input line and the editor requests an editor command.
The effect of typing this end-of-file signal in response to
specific prompts depends on the prompt that was issued. Each
such case is treated in the chapter "Editor Commands” when
discussing the commands that issue the prompts.
Control-C: keyboard interrupt
The editor traps the control-C keyboard interrupt and uses it as
a signal to stop executing an "append", "cchange", ,f change ,f ,
"find”, or "print” command. It has no effect on other commands.
If the editor is executing multiple commands typed on a single
line, typing a control-C will cause the editor to stop processing
those commands and request a command from the keyboard.
Control-\: "quit" signal
The UniFLEX "quit" signal causes the editor to terminate
immediately, without making any attempt to save the edited
information. If an existing file was being edited when the
"quit" signal was typed, the original file is left intact without
any of the changes that had been made during the edit session.
-6 -
The Editor s Use of Disk Files
The UniFLEX Text Editor is a disk-oriented editor. This means
that the information being edited is read from and written to
disk files. Other than the user's terminal, the only way to
provide information to the editor is through disk files.
When the editor is called to edit an existing file, the
information in that file is read into a large buffer in memory
called the edit buffer. It is in this buffer that all of the
changes to the information take place. When the user is
satisfied with the changes made, the updated information is
written to a disk file in response to specific commands.
If a file is larger than will fit in the edit buffer, the file
must be processed in segments. With few exceptions, the editing
commands operate only on that data which is in the edit buffer.
Commands are provided which permit the user to flush the edit
buffer of updated information and read in the next segment of
data for editing.
How the editor manipulates disk files depends on whether it is
creating a new file or editing an existing file. In some cases,
a temporary file is created to hold the updated information. If
used, this temporary file has a name composed of "edit." followed
by 5 digits and a single letter. The 5 digits represent the task
number of the editor. For example, r, edit .00324a" is a valid
temporary file name used by the editor. Unless the editor is
terminated by a "quit" signal or a fatal system error, the
temporary file is destroyed at the end of the edit session.
Creating a new file
When the editor is called with a single file name, and that file
does not already exist, the editor will create the file at the
start of the edit session and write directly into it as the edit
session progresses.
When the editor is called with no file names specified, a
temporary file in the user's current directory is created into
which the information is written as the edit session progresses.
At the end of the edit session, this temporary file is renamed to
that name specified by the user in response to the r, File name?"
prompt .
Editing an existing file
When the editor is called with a single file name, and that file
already exists, a temporary file is created into which the
information is written as the edit session progresses. The
temporary file is created in the same directory in which the file
being edited resides. At the end of the edit session, the
- 7 -
original file is renamed to the backup file name and the
temporary file is given the name of the original file. If no
backup file is requested (by specifying the 'b' option), the
original file is destroyed and the temporary file is given the
name of the original file.
When the editor is called with two file names specified, the
second file is created and the updated information is written
directly into it. The original file is not changed.
Command Input from a. File
It is possible to use the UniFLEX I/O Redirection capability of
the shell program to have the editor read its commands from a
file instead of from the keyboard. The editor will process the
commands as though they were entered from the terminal's
keyboard. If the end of the command file is reached before a
"stop" or ,f abort M command is read, the action is the same as
though a control-D were typed from the keyboard. This action has
been described previously in the discussion of the control-D
character.
Fatal Errors
The UniFLEX Text Editor attempts to make an intelligent decision
when confronted with an error response to a UniFLEX system call.
However, if an error is received which is unexpected and
indicates that the editor cannot continue to function, it will
issue a message and terminate immediately. The various messages,
both fatal and non-fatal, are listed in the chapter "Editor
Messages".
- 8 -
TUTORIAL
The purpose of this section is to briefly introduce the reader to
the use of the UniFLEX Text Editor. We will, therefore,
illustrate its use with a number of examples.
We will enter the editor with the UniFLEX command "edit test".
Let us assume that the file "test" does not already exist, 60 we
are creating a new one. The editor tells us "New file is being
created" and prompts for information by displaying the first line
number (1.00) followed by an equal sign. At this time we will
create our file by simply typing all lines until finished,
terminating each line with a carriage return.
New file being created
1.00=This is an example of the
2.00=UniFLEX Text Editing System. A number of
3 .00=examples will be presented to allow easy and
4.00=rapid learning of its capabilities.
5.00=The following are some nonsense lines:
6 .00=ABCDEFGHIJKL
7 .00=AAAAAAAA
8.00=TESTING 1234
9.00=This editor is easy to use!
10.00=BBBBBBBB
11 . 00 =
12.00=This is the end of this file,
13.00=at least for now.
14.00=#
13.00=at least for now.
#
Notice it was necessary to type a pound sign (#) in column one to
leave the data input mode. At this time, the system printed the
last line and returned with the system prompt (a pound sign).
The editor is now ready to accept commands.
Note also that both uppercase and lowercase letters were used in
the text. The editor distinguishes between the two cases as will
become more evident later on.
Each line of text in the edit file is given or has a line number
which is used by the editor to uniquely identify the line. Each
line number is of the form "m.nn" where 'm' is an integer and 'n'
represents any of the digits 0 through 9. To specify a line
number, one has to specify only enough of the line number to
identify it uniquely. For example, 73, 73., 73.0, and 73.00 may
be used to refer to line 73.00; 259.6 refers to line 259.60. The
largest line number used with the editor is 65535.99. Let's
denote a line number by the symbol "<line>". Later on, we will
expand this definition of <line> to include other means of
specifying a line; but for now, let us assume that it means a
line number. We will be using this symbol throughout this
manual.
9 -
An editor command tells the editor what action is to be performed
and usually which line or block of lines are to be affected (if
any). For each editing capability supported by the editor, there
is a command which is used to indicate the desired action. For
example, the editor can delete lines of text from a file, insert
lines of text into the file, print lines contained in the file,
and so on. Corresponding to each capability there is a command;
hence, there is a Delete command, an Insert command, a Print
command, and so on. If we define the symbol <command> to mean
any editor command, the basic form of an edit command is
<1 ine > <command >
For example, the command to display (Print) line 12.00 is
#12P
12.00=This is the end of this file,
#
where "12" is the <line> specification and is the <command>
in this command. As can be seen in the example, this causes line
number 12 to be printed on the terminal. Note that in this
example we have used an uppercase as the command. Both
upper- and lowercase letters are acceptable as commands; thus the
command ' p' is the same as the command 'P'. This equivalence of
upper- and lowercase does not hold true for the data in the lines
of text. Here, a lowercase letter is treated as distinct from
its uppercase form.
Now, let's learn how to use the insert command. In normal usage
of the word "insert" we say something like: "Insert this card
after this other card". To use the Insert command, we specify
the line after which we want to insert new lines followed by an
I:
<line>I
After typing the command followed by a carriage return, the
editor will select an appropriate line number and prompt for
'input by displaying the line number followed by an equal sign.
After each line of text is entered and the carriage return is
typed, the editor will prompt for the next line. To exit from
the "Insert mode" one simply types a pound sign followed by an
edit command in response to a new line prompt. An "end-of-f ile"
signal may also be used to leave the "Insert mode".
Some examples of the use of Insert are:
- 10 -
#81
8.10=This is an inserted line.
8.20=So is this.
8.30=#11 I
11 .10=Another inserted line.
11.20=#6 P
6 .00=ABCDEFGHIJKL
#
It should be noted that the editor may renumber some lines
following the inserted text. This occurs when enough lines are
inserted such that the inserted line numbers overlap line numbers
in the original text. When this occurs, an informative message
is issued.
Next, let's learn how to use the Delete command. With this
command we can delete one line or a block of lines with one
command. To delete only one line, we specify the <line> to be
deleted followed by a D:
<1 ine >D
When the carriage return is typed, the line disappears.
To delete more than one line we need to indicate not only the
first line to delete but also the last line to be deleted. Let's
call the last line the "target" line and denote its specification
as "<target>". Although the editor supports fancier ways to
specify the <target>, we will just consider the two simplest: (1)
<target> may be the number of lines to be deleted (counting both
the first and last line of the block), or (2) <target> may be a
pound sign followed immediately by the line number of the last
line of the block to be deleted. Some example <target>s are: 3
(deletes three lines), 26 (delete 26 lines), and #26 (delete
lines through line 26.00).
The syntax to Delete a block of lines is
<line>D <target>
where <line> indicates the first line to delete and <target>
indicates the scope of the delete.
To illustrate the use of the Delete command, let's assume we have
a file containing 53 lines with integer line numbers (i.e., 1, 2,
3, . ..,53). With the commands
#15D
#24D #31
#52D 2
Bottom of file reached
#
we now have a file with lines 1 through 14, 16 through 23, and 32
- 11 -
through 51. The first command deleted line 15. The second
command deleted lines 24 through 31. The third command deleted
two lines starting with line 52. Since it deleted the last line
of the file, the editor displayed the informative message "Bottom
of file reached".
Before we discuss any more commands, we need to expand the
definitions of <line> and <target>.
As editing operations are performed, the editor keeps track of
the current line, which is usually the line most recently
affected by a successful edit command. Upon entering the editor,
the current line is the first line of the file. If, for example,
we have just inserted three lines between lines 12.00 and 13.00,
the current line will be 12.30. One should note that after a
line or a block of lines have been Deleted, the line immediately
following the last one deleted is made the current line (if the
last line of the file was deleted, the new last line of the file
will be the current line).
In our discussions above, we have implied that one has to
explicitly indicate a <line> for each command by specifying the
line number of the line of interest. However, if <line> is not
specified in a command, the current line is used. For example,
enter the following command:
#D 2
The editor will delete two lines starting with the current line.
Since we were at line 6.00, the "D 2" operation deleted lines
6.00 and 7.00. As you will learn to appreciate, the current line
default for <line> is extremely handy.
After performing all of the above operations, our file now looks
like this:
1 .00=This is an example of the
2.00=UniFLEX Text Editing System. A number of
3 .00=examples will be presented to allow easy and
4.00=rapid learning of its capabilities.
5.00=The following are some nonsense lines:
8.00=TESTING 1234
8.10=This is an inserted line.
8.20=So is this.
9.00=This editor is easy to use!
10.00=BBBBBBBB
11 . 00 =
11 .10=Another inserted line.
12.00=This is the end of this file,
13.00=at least for now.
We have seen that <line> may be specified by a line number or by
default to the current line. There are also several other ways
- 1 2 -
to specify <line>. One may also specify <line> with a "+n" or
"-n" (where 'n' is an integer) meaning the next nth line in the
file or the nth previous line in the file, respectively. If the
integer n is omitted, '+' indicates the next line, and
indicates the previous line. Two other useful <line> designators
are and 'I'. The caret or circumflex is used to
designate the top or first line in the file. The exclamation
point is used to move to the last line or bottom of file.
These various <line> specifiers are shown in the example below
using the PRINT command.
#~P
1 .00=This is an example of the
#+3 P
4.00=rapid learning of its capabilities.
#! P
13 .00=at least for now.
#-2P
11 .10=Another inserted line.
#
There may be times during the editing a file when we know part of
the contents of the line of interest but don't know its line
number or its displacement from the current line. In such a case
we can use the content-oriented feature of the editor to find it.
The syntax to specify <line> in this way is
/ <string>/
where '/' is a character to delimit (enclose) the <string> which
is a sequence of characters known to be in the line. When <line>
is specified as "/<string>/", the editor will search from the
current line through the file to find the next line containing
the specified <string>. Some examples will help to clarify this:
(1) /PRINT/ denotes the next line containing the character
string "PRINT", and (2) /GO TO 35/ refers to the next line
containing "GO TO 35". If the <string> is found in any
subsequent line of the file, that line is made the current line
and the requested edit operation is performed on it. If the
<string> does not occur anywhere subsequent in the file, the
editor issues the message "No such line" and does not change the
current line pointer. Note that the delimiter does not need to
be a slash; it may be some other character such as a quote (') or
a comma. For example, 'A/B' refers to the next line containing
"A/B".
It is also possible to prefix the string designator with
(minus sign) to indicate a previous line containing that string.
A few examples with our sample file will show the use of
"/<string>/" as a <line> designator.
- 13 -
#-/rapid/P
4.00«rapid learning of its capabilities.
#;123; P
8.00=TESTING 1234
#+'end' P
12.00=This is the end of this file,
#
To summarize, we have seen that <line> may be specified in a
number of ways, namely: (1) by default to the current line, (2)
by typing a line number, (3) by "+n" denoting the nth subsequent
line, (4) by "-n" referring to the nth previous line, (5) by
/<string>/ denoting the next line in the file containing the
indicated string of characters, (6) "-/<string>/" to denote the
nearest previous line containing the specified character string,
(7) to denote the first line of the file, and (8) to
denote the last line of the file.
Now let's turn our attention to expanding the definition of
<target>. As you may recall, a <target> is used in some commands
to indicate the number of lines to be affected by the edit
operation. We have already seen that a <target> may be specified
by (1) an integer 'n' indicating the number of lines to be
affected, such as P3, meaning print 3 lines, and (2) a line
number preceded by a pound sign (#) indicating the line number of
the last line to be affected, such as P #6, meaning print all
lines to and including line #6. The <target> is simply a
designator telling how many lines the edit command should affect.
In addition to the two mentioned forms of <target>, we also have,
(3) if no <target> is specified in a command whose syntax accepts
one, a <target> of 1 is assumed, thereby affecting only one line.
As with <line>, one may specify <target> by (4) "/<string>/"
which indicates the next line in the file containing the
specified character string, (5) to denote the top line in the
file, and (6) to denote the bottom line in the file. A minus
sign may be used to indicate that processing is to proceed
backward through the file as in the following two cases: (7)
"-n" and (8) "-/<string>/".
With this understanding of <line> and <target>, we can now
discuss some more commands. The Print command is used to display
a line or a group of lines. Its syntax is
<line>P <target>
where "<line>" and "<target>" may be specified in any of the ways
discussed above. To print just a single line, one need specify
only <line> followed by a carriage return; therefore, the
following two commands perform the same thing:
- 14 -
<line >P
and
<1 ine>
Going back to our test file, we can illustrate the various forms
of <target> as used with the Print command.
#2P
2 .OO^UniFLEX Text Editing System. A number of
#-l
1 .00=This is an example of the
#P /easy/
1.00=This is an example of the
2.00=UniFLEX Text Editing System. A number of
3 .00=examples will be presented to allow easy and
#! P -3
13.00=at least for now.
12.00=This is the end of this file,
11 .10=Another inserted line.
#-/ BBB/ P -/ 123/
10.00=BBBBBBBB
9.00=This editor is easy to use!
8.20=So is this.
8.10=This is an inserted line.
8.00=TESTING 1234
#12P!
12.00=This is the end of this file,
13.00=at least for now.
#
The first command displayed line 2.00 and made that line the
current line. The second command requested that the line
immediately preceding the current line be displayed. The third
command displayed the block of lines from the current line down
through the line containing the character string "easy". The
fourth command printed 3 lines starting at the bottom of the file
and ending at line 11.10, which becomes the current line. The
fifth command requested the previous line containing the
character string "BBB" be found, and then starting with that
line, display all lines going backwards through the file until a
line containing the character string "123" has been displayed.
This shows the extreme usefulness and power of the
content-oriented characteristic of the editor. The last command
requested that all lines from line 12.00 to the end or bottom of
file be displayed.
The next command to discuss is "Next" which is used primarily to
move the line pointer. Although it may be used otherwise,
usually it is used only with the default <line>. Its syntax is
N<target>
- 1 5 -
This command finds the line indicated by <target>, displays it,
and makes it the current line. A few examples will illustrate
its use.
#~P
1.00=This is an example of the
#N
2.00=UniFLEX Text Editing System. A number of
#N 6
8.20=So is this.
#N -2
8.00=TESTING 1234
#
The following command performs single-line replacements or
inserts. Its syntax is
<line>=<text>
where "<line>" specifies the number of the line to be replaced or
inserted and may, of course, default to the current line.
"<text>" is the text that is to comprise the line. To illustrate
this command, let's continue our example series.
#=Replace current line here
#5.25=This line created with "equals".
The first command changed the contents of line 8.00, the current
line. The second example inserted a line with the line number
5.25.
The next command to be discussed is the "Change" command. It is
used to change occurrences of one character string into another.
Its syntax is
<line>C/<stringl>/<string2>/ <target> <occurrence>
where '/' is a delimiter character to separate the two character
strings; "<stringl>" is the character string to be replaced;
"<string2>" is the string of characters to replace them;
"<target>" specifies the range of the changes; and
"<occurrences>" specifies which occurrence(s ) of <stringl> should
be replaced in the line(s). If <occurrence> is 1 or is not
specified, then only the first occurrence of <stringl> in any
line of the block will be changed - the second or subsequent
occurrence of the string in such a line will not be affected. If
2 is specified for <occurrence>, then only the second occurrence
of <stringl> in any line of the block will be changed. To change
all occurrences of the indicated string in the block, use an
asterisk (*) for <occurrence>. Let's illustrate the Change
command by continuing our example.
- 16 -
#4C/rapid/fast /
4.00=fast learning of its capabilities
#8.1C/This is //
8.10=an inserted line.
#-5C;a;$; ;some; *
3 .00=ex$mples will be presented to $llow e$sy $nd
4.00=f$st le$rning of its c$p$bilities.
5.00=The following $re some nonsense lines:
#12C/e/?/ -2 3
12.00=This is the end of this fil?,
11 .10=Another insert?d line.
#
The first example replaced the string "rapid" with the string
"fast" in line 4.00. The second example deleted the string "This
is" and a blank from line 8.1. The third example starts at the
fifth previous line (line 3.00) and changes every occurrence of
'a' to ' $ ' down through all lines until the line containing the
character string "some" (line 5.00) is reached. The last example
changes the third occurrence of 'e' to '?' in line 12.00 and then
in line 11.10. Note that the target "-2" should also include
line 11.00. However, since line 11.00 does not contain 3
occurrences of 'e', no change is made.
The last command to be discussed is used to exit from the editor.
This can be done several ways: STOP, S, or LOG. This will
return you to the operating system.
Now let's go back to our test file and illustrate some of the
features and commands we have discussed.
#~P!
1.00=This is an example of the
2.00=UniFLEX Text Editing System. A number of
3 .00=ex$mples will be presented to $llow e$sy $nd
4.00=f$st le$rning of its c$p$bilities.
5.00=The following $re some nonsense lines:
5.25=This line created with "equals".
8.00=Replace current line here
8.10=an inserted line.
8.20=So is this.
9.00=This editor is easy to use!
10 .00=BBBBBBBB
11 .00 =
11 .10=Another insert?d line.
12.00=This is the end of this fil?,
13.00=at least for now.
#2C/ing System/or/
2.00=UniFLEX Text Editor. A number of
#/ BBB/
10.00=BBBBBBBB
- 17 -
#-;This is; C 'e'xx' ! *
1.00=This is an xxxamplxx of thxx
2.00=UniFLEX Txxxt Editor. A numbxxr of
3 .00=xxx$mplxxs will bxx prxxsxxntxxd to $llow xx$sy $nd
4.00=f$st lxx$rning of its c$p$bilitixxs.
5.00=Thxx following $rxx somxx nonsxxnsxx linxxs:
5.25=This linxx crxxatxxd with "xxquals".
8.00=Rxxplacxx currxxnt linxx hxxrxx
8.10=an insxxrtxxd linxx.
9.00=This xxditor is xxsy to usxx!
11 .10=Anothxxr insxxrt?d linxx.
12.00=This is thxx xxnd of this fil?,
13.00=At lxxast for now.
#N -4
10.00=BBBBBBBB
#-l I
9 . 1 0=TEST-TEST-TEST
9.20=123 456 7 890
9.30=#D!
Bottom of file reached
#~D!
Bottom of file reached
iTP!
1.00=This is an xxxamplxx of thxx
2.00=UniFLEX Txxxt Editor. A numbxxr of
3 .00=xxx$mplxxs will bxx prxxsxxntxxd to $llow xx$sy $nd
4.00=f$st lxx$rning of its c$p$bilitixxs.
5.00=Thxx following $rxx somxx nonsxxnsxx linxxs:
5.25=This linxx crxxatxxd with "xxquals".
8 .00=Rxxplacxx currxxnt linxx hxxrxx
8.10=an insxxrtxxd linxx.
8.20=So is this.
9.00=This xxditor is xxsy to usxx!
9 . 1 0=TEST-TEST-TEST
9.20=123 456 7 8 90
#S
This tutorial has been only a brief introduction to the UniFLEX
Text Editor. The next section of this manual contains a detailed
description of each command with examples. It is important to
read and study the entire manual in order to fully understand and
utilize all of the power and features of this editor.
- 18 -
EDITOR COMMANDS
The following section describes all of the editor commands. If
you are not familiar with the editor, you would be well advised
to first read the Tutorial section of this manual. It will give
you an overall feel for what the editor can do, thus making the
detailed descriptions more understandable. Before getting into
the complete descriptions of the editor commands, a few general
points will be covered.
Using Strings
Several of the editor commands use character strings as
arguments. These arguments are either matched against strings in
the text, or replace a string in the text. A string argument
begins after a delimiter character and continues as a sequence of
any characters until the delimiter is again encountered. The
delimiters are not considered part of the string to be used in
the matching or replacement operations. Although the delimiters
in the following descriptions are frequently represented as
slashes, '/', most any non-blank, non- alphanumeric character may
be used as the delimiter such as :*/()$,. [ ] : etc.
Note that the following characters may not be used to enclose
strings unless they are preceded by either a plus (+) or minus
(-) sign: (denotes first line of file), (denotes last
line of file), (denotes target is above current line), and
the character denoted by "lino" (normally a pound sign) which is
used to indicate line numbers. The equals sign may not be
used as a string delimiter. The delimiter character is redefined
in each new request by its appearance before a string. If two
strings exist in one command (as in the "change" command), the
same delimiter character must be used for each string.
All of the editor commands use the <line> information preceding
the command to position the pointer prior to any command action.
The <line> parameter may of course be null, meaning leave the
pointer at its current position. All of the following are valid
<line> designators:
1 . Any number
references a specific line number
2. +n
denotes the nth subsequent line
3 . -n denotes the nth previous line
4. /<string>/ refers to the next line in the
file containing the indicated
string of characters
- 19 -
5. -/<string>/
6 . *
7. !
8 . nul 1
refers to a previous line con-
taining the indicated string
denotes the first line of the file
denotes the last line of the file
stay at the current line
Line numbers less than 1 .00 must be specified with a leading
zero. For example, even though the editor may display a line
number as ".10", it should be specified as "0.10" when used in
commands. The maximum line number is 65535.99. Inserting after
this maximum line number will cause the line numbers to "wrap
around" back to zero.
Many of the editor commands require <target> information. This
tells the editor to operate on the current line and all other
lines in the file up to the line referenced by the <target>. In
cases where a <target> is required, leaving it null will make the
<target> default to one, meaning only the current line will be
affected by the command. All of the following are valid <target>
designators :
1. an integer n indicates that n lines should be
affected by the edit operation
2. #n denotes the line number of the
last line to be affected.
The 't' is actually the "lino"
character and may be changed by
the user with the "set" command.
3. /<string>/
4. -/<string>/
5. ~
denotes the next line in the file
containing the specified character
string
references the previous line con-
taining the indicated string
denotes all lines up to the top of
the file
6 .
denotes all lines to the bottom
or last line of the file
7 . +or- n
8. (null)
indicates that n lines should be
affected and in which direction
from the current line
defaults to 1 and only the current
line is affected
- 20 -
As we have seen, the form <target> is used to specify a range of
lines to which the command will apply. The command will be
applied to each line, starting with the line specified by <line>
and continuing until the target is reached.
If a string <target> is specified, the command will apply to
successive lines of text until a line containing the string is
reached. Processing proceeds downward in the edit buffer unless
the target is preceded by a (minus sign), indicating that
processing is to proceed upward (toward the first line) in the
edit buffer. Targets may also be preceded by a plus sign
(indicating downward movement). If a line number target is
specified, processing begins at <line> and proceeds toward the
target line number. Some examples of <target>s are:
2
+10
-3
/STRING/
+/ STRING TARGET/
-/BACKWARD DISPLACEMENT TO A STRING/
+*ANY DELIMITER WILL WORK FOR STRING*
++EVEN PLUS SIGNS CAN W0RK+
#23.00
Specifying & Column Number
Any "/<string>/" descriptor may be postfixed with a column number
immediately after the second delimiter to indicate that the
preceding string must begin in the column specified. If the
column specified is not in the range of the zone in effect, the
request will be ignored. (See the "zone" command.) Some examples
are:
/IDENT/11
/PROGRAM/77
♦LABEL* 2
$COMMENT$30
- 21 -
Using the "Don't Care" Character Se&
f
^4; T
A "Don't Care" character may be set to allow indiscriminate
matches of parts of a string. When this character is placed in a
string, any character in the file will automatically match. The
Don't Care character will have its special meaning only in a
string being used to search the file. In other words, the Don't
Care character will not act as such in a replacement string such
as the second string of a "change" command. The Don't Care
character may be effectively disabled by setting it to a null.
Assuming we have previously set the Don't Care character to a
'?', here are some examples:
/A???/
This would match any 4 letter
string beginning with A
@03/??/78@
This would match all days in
the 3rd month of 1978
/??? /9
This would match any 3 letter
string starting in column 9
The "Command Repeat" Character
A special "Command Repeat" character has been set up in
editor to allow you to exactly repeat the last command in
input buffer. The repeat character is set to a control-R.
examples of commands which may be useful to repeat are:
the
the
Some
PRINT 15
To print a screen of lines
at a time
NEXT
Allows you to single step through
the file with one key
'CO! !
To quickly fill the workspace
FIND /SOME STRING/
If the first string found
is not the one desired
Using the "End of Line" Character
The editor supports an or "End Of Line" or "eol" character to
allow multiple commands in a single line. There are some
commands that cannot be followed by another command on the same
line. This fact is documented in the descriptions of those
commands. The "eol" character may be changed by using the "set"
command. An example of "eol" use (with "eol" set to '$') is:
'D2$P10$T
- 22 -
This sequence will delete the first 2 lines of the file, then
print the iiext 10 lines, and finally return the pointer to the
top of the file.
Using Tab Characters
The user may specify a tab character and up to 20 tab stops. The
tab character may then be inserted into a line where it will be
replaced by the appropriate number of fill characters when the
end of the line is received. The fill character defaults to a
space, but may be changed to another character with the "set"
command. If tab stops or the tab character have not been
previously set, but some character has been used throughout the
file as a tab, it can still be expanded by setting it to be the
tab character, setting up your tab stops and then using the
"expand" command on the file. Note that if the tab character has
been set, subsequent uses of the "insert" or "replace" commands
will cause automatic tab expansion. However if a tab character
is added to the file by the use of a "change", "append", or
"overlay" command, that character will remain intact in the file
until the "expand" command is invoked on the line containing that
tab character. After tabs are expanded, the tab character no
longer exists in the data. All occurrences will have been
replaced by the appropriate number of fill characters. Setting
the tab character to be the same as the fill character
effectively disables the tab feature.
Note the the tab character described above is distinct from the
ASCII horizontal-tab character (HT or control-I). The effect of
the HT character is described in the chapter ,f UniFLEX INTERFACE".
It is possible to set the editor tab character to the HT
character. If this is done, UniFLEX may take special action when
the HT character is typed, but the character will be replaced by
fill characters when it is put into the edit buffer.
Length of Lines of Text
Lines entered from the keyboard are limited to 255 characters.
The lines in the text file may be of any length. Lines longer
than 255 characters may be created with the "merge" and "append"
commands •
- 23 -
Editor Commands
There are five groups of editor commands: environment commands,
system commands, current line movers, edit commands, and disk
commands. A complete description of all commands in each group
is given below. In the following descriptions, quantities
enclosed in square brackets ([...]) are optional and may be
omitted. A backslash (\) is used to separate options. Many
commands have abbreviations. Both the full name of the command
and its abbreviation are given. A command and its abbreviation
may be used interchangeably. All commands below are in lower
case; however, in use, a command may be in either upper case or
lower case.
Environment commands
dkl <command string>
MEANING:
"dkl" is used to define one of two "command constants".
The Ccommand string> is a single command or several
commands separated by the "eol" character (see "set"
command). All of the command line, including the
carriage return is assumed to be the argument to the
"dkl" command. This command string may be executed at
any time by the "kl" command, described below. The "dkl"
command is most useful for remembering and re-executing a
frequently used sequence of commands.
EXAMPLES:
dkl f -/ ,nl/l$i/ .sp Define a command sequence of
"f -/.nl/1" followed by "i/.sp".
This assumes that "eol" is
This sequence may be executed by
typing "kl".
dk2 Ccommand string>
MEANING:
"dk2" is used to define one of two "command constants".
The Ccommand string> is a single command or several
commands separated by the "eol" character (see "set"
command). All of the command line, including the
carriage return is assumed to be the argument to the
"dk2" command. This command string may be executed at
any time by the "k2" command, described below. The "dk2"
command is most useful for remembering and re-executing a
frequently used sequence of commands.
- 24 -
EXAMPLES :
dk2 c /sample// 1 2 Define the command constant:
M c /sample// 1 2".
This command may be executed by
typing "k2".
esave [<UniFLEX path specif ication>]
MEANING:
The "esave” command saves the current editor
"environment " on an "editor configuration" disk file
named ".edit configure" in the user's directory. The
editor environment consists of the "header" column count;
the "numbers" and "verify" flags; current tab stops; the
"tab", "dec", "fill", "eol", and "lino" characters; the
commands saved as command constants "kl" and "k2"; and
the search zones in effect. When the editor is called,
the environment is automatically set from the
configuration file in the user's directory, if one
exists. The editor environment may also be reset from
the configuration file at any time during the edit
session by the "eset" command, described below.
The environment information may be saved in a directory
other than the user's current directory by specifying a
UniFLEX path as an argument to the "esave" command. This
path must include only directory names and must be
terminated by the separator character '/'.
EXAMPLES :
esave Save the current editor environment
on the file ". editconf igure" in the
user's directory.
esave /usr/dde/ Save the current editor environment
in file "/usr/dde/. editconf igure".
eset [<UniFLEX path specif ication>]
MEANING:
The "eset" command is used to reset the editor
environment from an editor "configuration" file created
by the "esave" command (see above). The configuration
file is named ". editconf igure" and is normally expected
to be found in the user's current directory. A UniFLEX
path may be specified as an argument to the "eset"
command to force the searching of a different directory.
This path must include only directory names and must be
terminated by the separator character '/'.
- 25 -
EXAMPLES :
eset Reset the editor environment from
the file ". editconf igure M in the
user's directory.
eset /usr/dde/ Reset the editor environment from
file "/usr/dde /.editconf igure".
header [<count>]
h [<count>]
MEANING:
A header line of <count> columns will be displayed. The
heading consists of a line showing the column numbers by
tens, followed by a line of the form "123456789012..." to
indicate the column number. Columns for which tab stops
are set will contain a hyphen instead of the normal
digit. If a column count is given, it becomes the
default such that if just 'h' is subsequently typed, that
number of columns will be printed.
EXAMPLES :
header 72 Display column number headings for
72 columns
h 30 Display column numbers for 30
columns
kl
MEANING:
Execute the command constant that was defined by "dkl".
If no command constant was defined, the current line is
printed. This command may not be followed by another
command on the same line.
EXAMPLES :
kl Execute the command constant.
k2
MEANING:
Execute the command constant that was defined by "dk2".
If no command constant was defined, the current line is
printed. This command may not be followed by another
command on the same line.
- 26 -
EXAMPLES :
k2
Execute the command constant.
lkl
MEANING:
Display the command constant that was defined by ,f dkl ,f .
If no command constant was defined, a blank line is
printed.
EXAMPLES:
lkl Display the command constant.
Ik2
MEANING:
Display the command constant that was defined by "dk2 ,r .
If no command constant was defined, a blank line is
printed.
EXAMPLES :
lk2 Display the command constant.
numbers [off\on]
nu [off\on]
MEANING:
The line number flag is turned off or on. If the flag is
off, then line numbers will never be printed. If neither
"off" nor "on" is specified, then the flag will be
toggled from its current state.
EXAMPLES :
numbers off Turn line number printing off
nu on Turn it back on
nu Toggle from on to off or from
off to on
- 27 -
renumber
ren
MEANING:
The "renumber" command will renumber all of the lines in
the current edit buffer. Lines in the renumbered buffer
will start with the line number of the first line in the
buffer and will have an increment of one. The current
line does not change, although its number will probably
have been changed.
EXAMPLES :
renumber Renumber the lines in the current
edit buffer
ren
set <name> = '<char>'
MEANING:
"set" is used to define certain special characters or
symbols. The <name>s which may be set are:
tab - the tab character
fill - the tab fill character
dec - the "don't care" character for string searches
eol - the end of line character which may be used to
separate several commands on a single line
lino - the line number flag character which is used to
indicate that a target is a specific line number
The default values are: dec, tab, and eol are null
fill is the space character
lino is '#'
The default values may be initialized from a
configuration file in the user's directory. See the
"esave" command.
EXAMPLES :
set
tab*'/ '
Set the
tab character to a
slash
set
tab="
Disable
tabbing by setting
the tab
character to a null
set
fill*' '
Set tab
fill character to a
blank
set
eol='$'
Set the
EOL character to $
set
lino='@'
Set the
line number flag to
- 28 -
tab [<columns>]
MEANING:
Used to set the tab stops. All previous tab stops are
cleared. If no columns are specified, then the only
action is to clear all tab settings. Any tab characters
occurring beyond the last tab stop are left in the text.
The maximum number of tab stops allowed is 20. Tab stops
MUST be entered in ascending order.
EXAMPLES :
tab 11,18,30 Set tab stops at columns 11, 18,
and 30
tab 7 72 Set tab stops for a FORTRAN program
tab Clear all tab stops
verify [on\off]
v [on\off]
MEANING:
The verify flag is turned on or off. The verify flag is
used by the commands "change" and "find" (and several
others) to display their results. If neither "on" nor
"off" is specified, then the flag will be toggled from
its current state.
EXAMPLES :
verify off Turn verification off
v on Turn it back on
zone [cl,c2]
z [cl,c2]
MEANING:
"zone" is used to restrict all sub-string searches (find,
change, <target>s, etc.) to columns "cl" through "c 2"
inclusive. Any substrings beginning outside those
columns will not be detected. If "cl" and "c2" are not
specified, then the zones will be reset to their default
values (columns 1 and 255). A string which starts within
the specified search zone and extends out of it will
still match a target.
EXAMPLES :
zone 11,29 Restrict searches to columns 11
through 29
- 29 -
zone
Search columns 1 through 255
System commands
abort
MEANING:
This command terminates the edit session without saving
any of the changes made during that session. The
original file, if one exists, is left intact. When
typed, this command will prompt "Are you sure?". If a
'y' is then typed, the edit session will be terminated.
Typing an 'n' or end-of-file signal will cause the editor
to look for another command. Typing any other character
will cause the prompt to be issued again.
EXAMPLES:
abort Abort the editing session.
edit <editor argument s>
e <editor arguments>
MEANING :
The "edit" command causes the current editing session to
be terminated (as though a "stop" or "log" command had
been entered), and another editing session started. The
<editor arguments> are any valid file names and editor
options as described in the section on "Calling the
Editor". This command may not be followed by another
command on the same command line. All changes to the
editing environment made by "Environment Commands" remain
in effect.
EXAMPLES:
edit test +b Terminate the current editing
session and start editing file
"test" with editor option 'b' .
log
MEANING:
This command causes the editing session to terminate.
The updated information is written to the new file, and,
if necessary, any unprocessed data from any existing file
is copied to the new file. A backup file is created if
appropriate (see the chapter "UniFLEX Interface for more
information on the editor's handling of disk files at the
end of an editing session).
- 30 -
EXAMPLES :
log
stop
s
MEANING:
Same as "log".
EXAMPLES:
stop
s
u <UniFLEX Command>
MEANING:
The 'u' command permits the execution of a UniFLEX
command. The specified command is passed to the shell
program for execution. The editor waits for the UniFLEX
command to finish before prompting for another editor
command. This command may not be followed by another
editor command on the same line.
EXAMPLES:
u list test List the file "test"
u copy test testl Copy the file "test" to "testl"
wait
MEANING:
The "wait" command is used to wait for the completion of
a background task generated by the 'x' command (described
below). This command cannot be used to wait for
completion of a background task that was not generated by
the editor. The editor will not request a command until
the background task is completed or a keyboard interrupt
(control-C) is typed. When the background task
terminates, a message is displayed specifying the task
number and whether it completed normally or abnormally.
In the event of abnormal termination, the response code
or interrupt code that caused the termination is given.
EXAMPLES :
wait Wait for the background task to
complete
- 31 -
x <UniFLEX Command>
MEANING:
The 'x' command is used to start a background task
running. The <UniFLEX Command> which was specified as
the argument is passed to the shell program for
execution. The task generated must run to completion
before the editor will allow the generating of another
such background task. The "wait" command must be used to
receive the termination status of a task before the 'x'
command may be used again. This command may not be
followed by another command on the same line.
EXAMPLES:
x copy test testl Copy "test" to "testl" as a
background task. A "wait" command
must be used to determine the
termination status of the task
before another background task
can be generated.
Current line movers
bottom
b
MEANING:
Move to the last line in the file and make it the current
line.
EXAMPLES :
bottom Make the last line of the file the
current line
b
find <target> [<occurrence>]
f <target> [<occurrence>]
MEANING:
Move the current line pointer to the line specified by
<target> and make it the current line. If the verify
flag is on (see "verify"), the line will be printed. If
<occurrence> is specified (an unsigned integer or an
asterisk), the command will be repeated <occurrence>
times. If <occurrence> is an integer, it must not start
in the first column following the second delimiter of a
string <target>, as it would then appear to be a column
specifier for that string. If no column is to be
- 32 -
specified, insert a space after the second delimiter and
before the <occurrence> as in the second example given
below. An asterisk means all occurrences of the <target>
will be found until the bottom or top of the edit buffer
is reached. If the target is not found, the current line
pointer will not be moved.
EXAMPLES:
find /string/ Find the next line containing the
string "string"
f/three lines/ 3 Find the next three lines contain-
ing the string "three lines"
f/all 'til bottom/* Find all following occurrences of
the indicated string
f-/ pro gram/ 7 * Find all previous lines which have
the word "program" starting in
column seven
next [<target> [<occurrence>] ]
n [<target> [<occurrence> ] ]
MEANING:
The line specified by the target is made the current
line. If the verify flag is on, the line will be
printed. If <occurrence> is specified, it must be an
unsigned integer. It indicates which next occurrence of
a line containing the target is to be made the current
line. If the target is not reached, the current line
pointer will be positioned at the bottom of the edit
buffer (or top of the edit buffer for a negative
<target>). If no target is specified, the next line will
be made the current line.
EXAMPLES :
next 5 Make the fifth following line the
current line
n Make the next line the current line
n-10 Make the 10th previous line current
n/string target/ Make the next line containing
"string target" to be the current
line
n/3rd occurrence/ 3 Make the third line containing the
indicated string the current line
- 33 -
position <target>
pos <target>
MEANING:
Search forward through the file for an occurrence of
<target>. If the target is not found in the current edit
buffer, the edit buffer is flushe d and the next edit
buffer is read from the file being edited. This process
continues until the target is located or the end of the
file is detected. If the target is found, it is made the
current line. If the target cannot be located, the
current position is the first line in the last edit
buffer. The <target> may not be a "backwards target"
(preceded by a minus sign) and may not be an integer
indicating relative displacement. Only a string or a
line number (preceded by the "lino" character) are valid
targets. Search zones are honored during the search for
the target. A column number is allowed after the target,
but an occurrence specification is not permitted.
EXAMPLES:
position /string/5 Position to the line containing
the string "string" in column 5.
pos #1000 Position to line number 1000
top
t
MEANING:
The first line of the file becomes the current line.
EXAMPLES :
top Make the first line of the file
the current line
Edit commands
append /<string>/ [<target>]
a /<string>/ [<target>]
MEANING:
Append the specified <string> just beyond the last
character of the current line (and to successive lines
until the target is reached). If the string is postfixed
with a column number, then append the string beginning at
the specified column (rather than at the end of the
line). Any characters previously in the line following
the specified column will be lost.
- 34 -
EXAMPLES :
append /./ Append a period to the end of the
current line
a *HELLO* 2 Append the word "HELLO" to the end
of the current line and to the end
of the next line.
a/sequence/73 *END*7 Append the word "sequence" starting
in column 73 of the current line
and successive lines until a line
containing the characters "END"
beginning in column seven is found.
break
MEANING:
The "break" command allows the splitting of a line into
two lines. The current line is printed, then a line of
input is accepted from the terminal (the break line).
When the line is printed, all ASCII HT characters will be
displayed as spaces so that the terminal cursor will not
be artificially advanced. The break line will be
positioned directly beneath the line printed out.
Characters are then typed by the user until the cursor is
beneath the character that is to be the first character
of the second line. A carriage return is typed to effect
the splitting of the line. Any characters may be typed
to move the cursor. After the line is split, the second
half of the broken line becomes the current line. If an
end-of-file signal is typed in response to the "Break "
prompt, the current line will not be changed. The
current line will also not be changed if the carriage
return typed in the break line is beyond the end of the
current line.
EXAMPLES :
break
25.00 This is the current line.
Break xxxxxxxxxxxx
The line will be broken at the start
of the word "current".
-3 5-
change /<stringl>/<string2>/ [<target> [<occurrence>] ]
c /<stringl>/<string2>/ [<target> [<occurrence>] ]
MEANING:
Replace the string specified by <stringl> with the string
specified by <string2>. If no <target> is specified,
only the current line is affected. The slashes represent
any non-blank delimiter character. <occurrence> is used
to specify which occurrence of <stringl> is to be
replaced in each line. It is either an unsigned integer
or an asterisk (*) signifying that all occurrences of the
substring <stringl> are to be replaced with <string2>.
By default, only the first occurrence will be changed.
Note that if <occurrence> is specified, and if changes
are to occur to the current line only, then the target
should be a 1 (one).
EXAMPLES :
change /this/that/ Replace the first occurrence of
"this" in the current line with
"that"
c/A/B/ 1* Change all occurrences of 'A' in
the current line to 'B'
c /first /last / 10 Change the first occurrence of
"first" to "last" in the current
line and also in the nine follow
ing lines
c /new/old/ /a target/ Change the first occurrence of
"new" to "old" in each line down
through the line containing the
string "a target"
c ,a,, -10 * Remove all 'a's in the current
line and in the nine preceding
lines
c*Hello* Delete the character string
"Hello" from the current line
cchange /<stringl>/<string2>/ [<target> [<occurrence>] ]
cc /<stringl>/<string2>/ [<target> [<occurrence>] ]
MEANING:
"cchange" stands for Controlled Change. This command is
exactly like the normal "change" command except that the
user can interactively specify whether each line
containing <stringl> should actually be changed or left
as is. This allows the user to step through the edit
buffer and selectively change certain strings. When a
- 36 -
line containing <stringl> is found, it is displayed at
the terminal and the user receives a prompt, "Change?" If
it is desired that the line be changed, type a 'y' for
yes* A character other than 'y' will cause the line not
to be changed. If an 's' or end-of-file signal is typed,
the command will terminate. Other characters will cause
a search for the next line containing <stringl>.
EXAMPLES:
cchange /ALPHA /OMEGA/ !* Perform a Controlled Change on
all occurrences of "ALPHA"
through the rest of the file
cc;a;z;-20 3 Perform a Controlled Change on
the third occurrence of 'a' in
the current and previous 19 lines
copy [ <destination-target> [<range-target> ] ]
co [<destination-target> [<range-target>] ]
MEANING:
The current line and successive lines until the
<range-target> is reached are copied so that they follow
the line specified by <destination-targe t>. The default
<destination-target> is 1, thereby causing a copy of the
current line to be placed after the next line. The
default <range-target> is 1, thereby copying only one
line. After the comm a nd is executed, the current line
pointer will be set to the new position of the last line
copied. Some lines may be renumbered after a copy with
no renumbering message issued.
EXAMPLES :
co #18 Put a copy of the current line
after line 18
copy #3 4 Copy four lines beginning with
the current line and place them
after line 3
co /check/ +/range/ After the next line which has
the string "check", place a copy
of each line starting with the
current line through the line
containing "range"
- 37 -
delete [<target>]
d [<target>]
MEANING:
The current line (and successive lines until the target
is reached) is deleted. After the command is executed,
the current line will be the line following the last line
deleted.
EXAMPLES :
delete 5
d
d /STRING/
expand [<target>]
exp [<target>]
MEANING:
The current tab character is expanded within all lines,
beginning with the current line, continuing down to and
including the line specified by <target>. Since tabs are
normally expanded as lines are inserted into the file,
this command is primarily of use when one has forgotten
to define a tab character or has inserted a tab character
with an "append", "overlay", or "change" command.
EXAMPLES :
expand 100 Expand 100 lines starting with
the current line
exp Expand the current line
Delete five lines (the current
line and the next four lines)
Delete the current line
Delete lines from the current
line through the next line that
contains the string "STRING"
insert
i
MEANING:
The editor will enter the input mode, prompting with line
numbers (unless line numbers have been disabled, see the
"numbers" command) and insert the lines below the current
line. Input continues until a line beginning with the
"lino" character in column one is received, or the
end-of-file signal is typed in column one. The
characters following the "lino" character are treated as
an editor command. The editor will try to choose an
insertion increment sufficient to insert at least 10
- 38 -
lines, or if that is not possible, the smallest increment
possible. The current line pointer is positioned at the
last line inserted. Lines may be inserted at the top of
the edit buffer by specifying a line number of zero. It
should be noted that the editor may renumber text lines
following the inserted text if the inserted line numbers
overlap line numbers previously in the file. This
command may not be followed by another command on the
same line. Note that if the line-delete character is
typed, the prompt is not reissued.
EXAMPLES:
insert
Oi
insert <text>
i <text>
MEANING:
The text (sequence of characters) which immediately
follows the separator (or blank) after the command name
will be inserted as a separate line below the current
line of the file. The line inserted becomes the current
line. It should be noted that the editor may renumber
text lines following the inserted text if the inserted
line number overlaps line numbers previously in the file.
This command may not be followed by another command on
the same line.
EXAMPLES :
I This below the current line of the file
insert everything after the first blank
Accept line input after the
current line
Insert at the top of the edit
buffer.
merge
MEANING:
The "merge" command is used to combine the current line
and the line immediately following it into a single line.
The merged line becomes the current line.
EXAMPLES :
merge Merge the current line and the
next line into a single line.
- 39 -
move [<destination-target> [<range-target>] ]
mo [<destination-target> [<range-target>] ]
MEANING:
The current line and successive lines until the
<range-target> is reached are moved so that they follow
the line specified by <destination-target>. The default
<destination-target> is 1, thereby moving the current
line after the next line in the file. The default
<range-target> is 1, thereby moving only one line. After
the command is executed, the current line pointer will be
set to the new position of the last line moved. Some
lines may be renumbered after a move with no renumbering
message issued.
EXAMPLES :
Move the current line down three
lines
Move the current line and all
lines up to and including the line
taining "TARGET STRING" after
line 1
Move five lines (including the
current line) up within the
file so that they follow a
line containing the character
string "Program"
Move the current line and the
four previous lines below line
number 10
is printed, then a line of input is
accepted from the terminal (the overlay line). When the
line is printed, all ASCII HT characters will be
displayed as spaces so that the terminal cursor will not
be .artificially advanced. The overlay line will be
positioned directly beneath the line printed out. Each
character of the overlay that is different from the
<delimiter> character (which defaults to a blank) will
replace the corresponding character in the current line.
The overlaid line will be printed if verify is "on". If
the end-of-file signal is typed in response to the prompt
for the overlay line, the current line will not be
changed.
move 3
mo #1 /TARGET STRING
mo -/Program/ 5
mo #10 -5
overlay[<delimiter>]
o[<delimiter>]
MEANING:
The current line
con-
- 40 -
EXAMPLES :
overlay
25 .00=THIP IS THE CORRENT LUNE.
Overlay S U I
25 .00=THIS IS THE CURRENT LINE.
overlay<d><text>
o<d><text>
MEANING:
This command is similar to the previous form of the
"overlay" command with these differences: (1) The current
line is not printed. (2) The remainder of the command
line (after the delimiter character) is taken as the
overlay text.
EXAMPLES:
overlay AT NUMBER.
25.00=THAT IS THE CURRENT LINE NUMBER.
print [<target>]
p [<target>]
MEANING:
Beginning with the current line, lines are printed until
the line specified by <target> is reached. By default,
only the current line will be printed.
EXAMPLES :
p Print the current line
print 5 Print 5 lines starting with the
current line
p -10 Print the current line and the
nine previous lines
print *string* Print all lines up to and including the
next line containing "string"
p -/string / Print all lines up through the
next previous line containing
"string"
- 41 -
replace [<target>]
r [<target>]
MEANING:
A "delete" from the current line through the <target>
line is performed. The editor then enters the input
mode, putting the new lines into the area vacated. It is
not necessary to enter the same number of lines as were
deleted. The line numbers of the lines inserted will
probably not be the same as those deleted. The current
line pointer will be positioned at the last line
inserted. By default, only the current line will be
deleted. This command may not be followed by another
command on the same line.
EXAMPLES:
r Replace the current line
replace 10 Replace 10 lines starting with
the current line
r /TARGET STRING/ Replace all lines from the current
line through the line containing
"TARGET STRING"
=<text>
MEANING:
The command replaces
supplied. The replacement
character following the
pointer is not moved.
EXAMPLES :
=THIS IS REPLACEMENT TEXT.
the current line with the text
text begins with the first
equals sign. The current line
(null)
MEANING:
The null command (i.e., just a carriage return) prints
the current line.
- 42 -
Disk commands
flush
MEANING:
The information above the current line in the edit buffer
is written to the file containing the updated data and
then deleted from the edit buffer. This command is used
to make room in the edit buffer for large insertions.
EXAMPLES :
flush Flush information above the
current line to updated file.
200flush Flush information above
line 200 to the updated file.
new
MEANING:
The information above the current line in the edit buffer
is written to the file containing the updated data and
then deleted from the edit buffer. The available space
in the edit buffer is then filled with data read from the
file being edited. This command is used primarily to
proceed to the next segment of the file when
modifications to the current edit buffer have been
completed. If a new file is being created, the "new"
command is the same as the ’’flush' 1 command.
EXAMPLES :
new Write the information above the
current line to the updated
file and read more data from
the file being edited.
!new Write the current edit buffer
(except for the last line)
to the updated file and read the
next segment from the file being
edited into the edit buffer.
- 43 -
read [<file name>]
MEANING :
The entire content of the file specified as an argument
is read and placed after the current line. The last line
of the information read becomes the current line. If no
file name is specified, a prompt for one will be issued.
If an end-of-file signal is typed in response to the
prompt for a file name, no data is read. The file name
may contain path information if any is necessary to
locate the file. The entire content of the file must fit
into the remaining unused space in the edit buffer. If
the file being read will not fit into the edit buffer,
the message "Not enough room" is issued and no data is
read.
EXAMPLES:
read /dde/data The information in the file
"/dde/data" is read and placed
after the current line.
lOOread moredata The information in the file
"moredata" is read and placed
after line 100.
write [<target>]
MEANING:
The information from the current line through <target> is
written to a file. A prompt is issued for the name of
the file that is to receive the information. If an
end-of-file signal is typed in response to the prompt for
the file name, no information is written. If the file
being written already exists, it is destroyed and a new
file created. If no <target> is specified, only the
current line is written.
EXAMPLES :
write /window/ Write the information from the
current line through the line
containing the string "window".
lOOwrite 200 Write lines 100 through 200,
inclusive, to a scratch file.
- 44 -
EDITOR MESSAGES
A task is already running
The 'x' command was used when there was already a task
generated by a previous 'x' command still running. The
"wait" command must be used to wait for the previous task to
complete before another background task may be initiated.
Attempting to merge onto last line of text
Attempting to use the "merge" command on the last line of
the file fails because the "merge" command joins the
specified line with the following line, and if the specified
line is the last line of the file, there is no line
following the specified line to join with it.
Bottom of file reached
An informative message issued when the last line of the file
is deleted.
Cannot create configuration file
A configuration file could not be created in the directory
specified in the "esave" command (current directory if no
directory was mentioned). Usually this means that the
directory specified could not be found or you don't have
write permissions on that directory. Make sure the
directory was specified with a trailing ' character.
Cannot create new file
The editor was called with two file names as arguments, but
the second file could not be created. This message is
preceded by a message indicating which error was detected.
This is a fatal error and will cause an immediate exit from
the editor. This message occurs only at the beginning of an
editing session.
Cannot create new backup file
The editor detected an error attempting to create a backup
file containing the information as it was prior to the
editing session. This message is preceded by a message
indicating which error was detected. The new backup file is
not created and the editing session continues.
Cannot create task
An error was detected when trying to generate a task with
the 'u' or 'x' command. This message is preceded by a
message indicating which error was detected. The command is
aborted and the editor requests a new command.
- 45 -
Cannot create temporary file
The editor detected an error when trying to create the
temporary file that holds the updated information. This
message is preceded by a message indicating which error was
detected. This message occurs only at the beginning of an
editing session.
Cannot delete old backup file
At the end of an editing session, the editor attempts to
create a backup file containing the information as it was
prior to the editing session. However, a file with the same
name as the backup file would have already exists and could
not be deleted. This message is preceded by a message
indicating which error was detected. The new backup file is
not created and the editing session continues.
Cannot open configuration file
The configuration file in the directory specified in an
"eset" command could not be opened. This usually means that
there was no configuration file in the specified directory,
or that the specified directory could not be found, or that
the permissions on the configuration file in the specified
directory exclude the user from opening the file for
reading. Remember that the directory name must be specified
with a trailing character.
Cannot open edit file
The file that is being edited exists, but could not be
opened. This message is preceded by a message indicating
which error was detected. This is a fatal error and will
cause an immediate exit from the editor. This message
occurs only at the beginning of an editing session.
Cannot open new file
The editor was called with two file names as arguments, but
could not open the second file to determine if it already
exists. This message is preceded by a message indicating
which error was detected. This is a fatal error and will
cause an immediate exit from the editor. This message
occurs only at the beginning of an editing session.
Cannot read configuration file
The UniFLEX system reported a media error while the editor
was trying to read from the editor configuration file.
- 46 -
Cannot read edit file
The UniFLEX system reported a media error while the editor
was reading from the file whose data is being edited.
Cannot rename files
The editor detected an error trying to rename the files at
the end of an editing session. This message is preceded by
a message indicating which error was detected. This is a
fatal error and will cause an immediate exit from the
editor. The user should then search for the temporary file
used by the editor. This file will contain the updated
information and should be copied to another file for
safekeeping.
Cannot write configuration file
The UniFLEX system reported a media error while the editor
was writing configuration data to the configuration file in
the specified directory (current directory if the
specification was omitted).
Delete existing backup file?
At the end of an editing session, the editor attempts to
create a backup file containing the information as it was
prior to the editing session. However, a file with the same
name as the backup file would have already exists. This
message is a request for permission to delete the existing
file, replacing it with the new backup file. The prompt
must be answered with a ' y' , for "yes", or an 'n' , for "no".
If 'y' or the end-of-file signal is typed, the file is
deleted and the new backup file is created. If 'n' is
typed, the file will not be deleted and no new backup file
created. If none of these are typed, the prompt is
re-issued.
Delete existing copy of new file?
The editor was called with two file names as arguments. The
second file already exists and must be deleted before the
editing session can continue. This message is request for
permission to delete the file. The prompt must be answered
with a 'y', for "yes", or an 'a ' , for "no". If 'y' is
typed, the file is deleted and the editing session
continues. If 'n' or the end-of-file signal is typed, the
file will not be deleted and the editing session is
terminated. If none of these are typed, the prompt is
re-issued.
- 47 -
Edit file does not exist
The file mentioned in a two-file "edit" command as the
<edit> file, the file containing the data to be edited,
could not be found. The editor will terminate immediately.
This behavior is different from the MC6809 versions of the
UniFLEX Text Editor. That version ignores the second file
name of the "edit" command and treats the command as though
it were a single file name command where the file name
mentioned does not exist.
Empty text buffer
This indicates that the text buffer is empty (contains no
text) and the requested command could not be completed.
Error attempting to open file
The file specified in a "write" command could not be opened
for writing. This usually means that the specified file
could not be created because the path to the file was
inaccessible, or the permissions on the directory in which
the file was to reside exclude the user from creating a file
there, or the file exists but the user does not have write
permission for the file.
Error copying edit file
At the end of an editing session, any unread data on the
file that is being edited is copied to the new file being
written. An error was detected during this copy process.
This message is preceded by a message indicating which error
was detected. This is a fatal error and will cause an
immediate exit from the editor.
Error creating scratch file
The file specified in a "write" command could not be
created. This message is preceded by a message indicating
which error was detected. The "write" command is aborted
and the editor requests a new command.
Error opening scratch file
The file specified in a "read" command could not be opened.
This message is preceded by a message indicating which error
was detected. The "read" command is aborted and the editor
requests a new command.
Error reading data file
The editor detected an error when trying to read from the
file being edited or from a scratch file with the "read"
command. This message is preceded by a message indicating
which error was detected. The current command is aborted
- 48 -
and the editor requests a new command; no data read from the
file is kept. If the file being read was the file being
edited, it is recommended that the editing session be
abandoned with the "abort" command since the file being read
is no longer positioned correctly.
Error waiting for task to complete
An error was detected when waiting for a task generated by
the 'u' or 'x' command to complete. This message is
preceded by a message indicating which error was detected.
The command is aborted and the editor requests a new
command .
Error writing new file
The editor detected an error when trying to write the
contents of the edit buffer to the file that holds the
updated information. This message is preceded by a message
indicating which error was detected. This is a fatal error
and will cause an immediate exit from the editor. All
changes to information still in the edit buffer are lost.
File is a directory
An attempt was made to edit a directory, not a text file.
This is a fatal error and causes an immediate exit from the
editor. This message occurs only at the beginning of an
editing session.
File name?
This is the prompt used when the editor requests a file
name. Commands that may request a file name are "read" and
"write". The editor will also request a file name in
response to the "stop" and "log" commands if no file names
were specified as arguments to the editor when it was
called.
Input error
An error status was returned by the UniFLEX Operating System
in response to a request for input from the standard input
device. This is normally the terminal keyboard and should
not generate any such error. If the standard input has been
redirected to a disk file, an error may be generated when
reading the disk for input characters. In either case, this
is a fatal error and causes an immediate exit from the
editor. All changes to information still in the edit buffer
are lost.
- 49 -
Line too long
The maximum size for a line being input to the editor is 255
characters. Lines in the file being edited may be of any
length, but those entered from the standard input device are
limited to 255 characters.
Name too long
The file name entered in response to a "File name:" prompt
is too long. The maximum size of a file name, including the
path specification, is 254 characters.
New file being created
This is an informative message indicating that there is no
existing file of information to be edited and that a new
file is being created.
New file is the same as the old file
The editor was called with two file names as arguments, but
both names point to the same file. Either the file names
are the same, or the two files have been linked with the
UniFLEX "link" system call.
No child task exists
The "wait" command was used when no background task had been
generated by the editor.
No lines deleted
An informative message indicating that the "delete" command
was used but the target could not be located. The user
answered "no" to the prompt asking if the delete was to
proceed.
No such line
A line number or target that could not be found was
specified in front of a command.
Not enough room
The file being read with the "read" command could not fit in
the available space in the edit buffer. None of the
information which was read from the file is kept. The
"flush" command may be used to try to make room for the
file. If that fails, the file being read should be split
into smaller files that may be read individually.
- 50 -
Not found
A target was specified that could not be found.
Output error
An error status was returned by the UniFLEX Operating System
in response to a request to output to the standard output
device. This is normally the terminal display and should
not generate any such error. If the standard output has
been redirected to a disk file, an error may be generated
when writing the data to the disk file. In either case,
this is a fatal error and causes an immediate exit from the
editor. All changes to information still in the edit buffer
are lost.
Positioning backwards is not allowed
The "position" command was called with a target that has a
leading minus sign, indicating a backward search.
Relative positioning is not allowed
The "position" command was called with a target that is an
unsigned integer, indicating a relative displacement forward
in the file.
Some lines renumbered
An "insert", "replace", or "break" command caused some lines
in the file to be renumbered. Note that the "move" and
"copy" commands will cause renumbering without this message
being issued.
Source overlaps destination
The "copy" or "move" command was issued with arguments such
that the target line was within the range of data being
copied or moved.
Syntax error
A syntax error was detected in a command.
Target not reached
Are you sure?
The "delete" command was used but the target could not be
located. If the user wishes the delete to proceed to the
end of the edit buffer, this prompt should be answered with
a 'y' . Answering with an 'n' or the end-of-file signal will
cause the delete to be aborted.
- 51 -
Task ttt : Abnormal Termination
Interrupt code: i
The background task "ttt" generated by the 'x' command was
interrupted before it could complete. The interrupt code
returned by the task is indicated by ' i ' . This message is
returned only in response to the "wait" command.
Task ttt: Abnormal Termination
Termination response: xxx
The background task "ttt" generated by the 'x' command has
completed abnormally. The termination response returned by
the task is indicated by "xxx". This message is returned
only in response to the "wait" command.
Task ttt initiated
Task number "ttt" has
command.
been started by the use of the 'x'
Task ttt: Normal termination
The background task "ttt" generated by the 'x' command has
completed normally. This message is returned only in
response to the "wait" command.
Too many file names specified
More than two file names were specified as arguments to the
editor. This is an informative message only; the extra file
names and any options specified after them are ignored.
Unable to open file
The file specified in a "read" command could not be found or
could not be opened for reading because of its permissions.
Unexpected error, edit session aborted
An error response was received from a UniFLEX system call
that the editor is incapable of handling. The editing
session is terminated immediately.
Unknown option specified
An unrecognizable option was specified when the editor was
called. This is an informative message only; the
unrecognizable option is ignored.
Write ends with an error
The UniFLEX system reported a media error while the editor
was writing data to the file specified in a "write" command.
• • .zones OK?
A target could not be found and the search zones were not
set to their default values. This is an informative message
asking the user to check the zones as they may have been the
reason that the target could not be found. This message
does not require a response from the user.
The editor is not able to interpret the given command.
Either the command could not be recognized or the format of
the command was undecipherable.
- 53 -