Trailing-Edge
-
PDP-10 Archives
-
bb-j710b-bm_tops20_v41_tools
-
tools/sed/sed.man
There are 20 other files named sed.man in the archive. Click here to see a list.
TUTORIAL FOR THE SED SCREEN EDITOR
A Christopher Hall - June 1982
(Operating system: TOPS-20 -- Terminal described: VT100 and [VT52])
TABLE OF CONTENTS
1.0 GETTING ACQUAINTED WITH SED . . . . . . . . . . . . . . . 2
1.1 The Viewing Window Concept . . . . . . . . . . . . 2
1.2 The Cursor - Where It's At . . . . . . . . . . . . 2
1.3 How to Talk to the Editor . . . . . . . . . . . . . 2
2.0 HOW TO START WRITING A FILE . . . . . . . . . . . . . . . 4
2.1 Running the Editor . . . . . . . . . . . . . . . . 4
2.2 Exiting the Editor . . . . . . . . . . . . . . . . 4
2.3 Moving the Cursor Around . . . . . . . . . . . . . 4
2.4 Putting Text in the File . . . . . . . . . . . . . 5
2.5 Inserting and Deleting Characters . . . . . . . . . 5
2.6 Moving the Screen Forward and Backward in the File . 6
3.0 EDITING AN EXISTING FILE, PART 1 . . . . . . . . . . . . . 7
3.1 Introduction to Commands and Parameters . . . . . . 7
3.2 On-line Help . . . . . . . . . . . . . . . . . . . 8
3.3 Getting Back Into Last Time's File . . . . . . . . 8
3.4 Rolling the Screen a Long Distance . . . . . . . . 8
3.5 Moving to the Beginning and End of the File . . . . 9
3.6 Inserting and Deleting Lines and Spaces . . . . . . 9
3.7 Copying or Moving Lines of Text . . . . . . . . . . 10
4.0 EDITING AN EXISTING FILE, PART 2 . . . . . . . . . . . . . 11
4.1 Compiling After Exiting . . . . . . . . . . . . . . 11
4.2 Searches . . . . . . . . . . . . . . . . . . . . . 11
4.3 Word-wise Tab and Backtab . . . . . . . . . . . . . 11
4.4 Inserting Text in the File Using <PUT> . . . . . . 12
4.5 Changing Files while Editing . . . . . . . . . . . 12
4.6 Recovering Deleted Stuff . . . . . . . . . . . . . . 13
5.0 EDITOR GOODIES . . . . . . . . . . . . . . . . . . . . . . 14
5.1 Defining Parameters by Moving the Cursor . . . . . 14
5.2 Moving a Given Percent of the Way Through the File . 15
5.3 <SWITCH>: Setting Switches or Querying Status . . . 15
5.4 <ERASE-LINE>: Erase from Cursor to End of Line . . 17
5.5 How to Edit Parameters . . . . . . . . . . . . . . 17
6.0 MORE EDITOR GOODIES . . . . . . . . . . . . . . . . . . . 18
6.1 Rectangular Insert/Delete Spaces . . . . . . . . . 18
6.2 Tokens . . . . . . . . . . . . . . . . . . . . . . 18
6.3 Picking or Deleting a Lot of Stuff . . . . . . . . 19
6.4 Scanning . . . . . . . . . . . . . . . . . . . . . . 19
6.5 Changing the Case of Characters . . . . . . . . . . 19
6.6 Setting or Clearing the Split-Screen Window . . . . 20
6.7 Erasing Words From the File . . . . . . . . . . . . 20
6.8 Substituting (Search and Replace) . . . . . . . . . 20
7.0 USEFUL COMMANDS FOR SPECIAL CASES . . . . . . . . . . . . 22
7.1 What to Do if the File is Wide . . . . . . . . . . 22
7.2 How to Put Control Characters in the File . . . . . 22
7.3 Many Ways to Save the File . . . . . . . . . . . . . 22
7.4 Repairing a Fragged Screen . . . . . . . . . . . . . 23
7.5 Repeating Commands or Inventing Your Own . . . . . . 23
7.6 Setting Up Default Switches in SED.INIT . . . . . . 23
7.7 Calling the EXEC from SED . . . . . . . . . . . . . 24
- 1 -
1.0 GETTING ACQUAINTED WITH SED
This paper describes the screen editor SED. It is a tutorial
which introduces a new editor user gradually to the features of the
editor. The first sections give only as much information as you
need to get started; later sections introduce you to the full power
of SED.
This tutorial does not give a complete description of SED. In
fact, if you never go beyond it you will miss a lot of the
interesting and useful editor features. The reference manual,
DOC:SED.DOC, is a complete description of all the editor functions.
When you have mastered the contents of this tutorial you should
consult the reference manual.
1.1 THE VIEWING WINDOW CONCEPT
SED thinks of a text file as if it were a scroll of writing -
lots and lots of lines of text, one line after another. The CRT
terminal screen is like a magnifying glass held over the scroll: it
shows a certain number of lines and a certain number of characters
per line, but the file may extend beyond the limits of the glass on
all sides. Like the magnifying glass, the terminal screen can be
moved forward, backward, left, or right over the file.
The terminal screen is called the "viewing window" into the
file. Moving the window forward or backward in the file is called
"rolling" the window, and moving it left or right is called
"sliding".
1.2 THE CURSOR - WHERE IT'S AT
The cursor is the blot or blinking dash that is always present
on the terminal screen. It represents your position in the file you
are editing. If you type a character it appears where the cursor is
and the cursor moves one space to the right. You can move the
cursor anywhere you like on the screen.
1.3 HOW TO TALK TO THE EDITOR
You can do three types of things with SED: put text in the
file, move the cursor around, and issue editor commands. Editor
commands do such things as insert blank lines or spaces into the
text, move the viewing window around, and search for things.
Descriptions of the various commands make up the bulk of this
tutorial.
- 2 -
You issue a command by typing a control character, a special
key, or an escape sequence. You type a control character by holding
down the button labeled "CTRL" and pressing a letter key (for
example, to get a ^T press "CTRL" and "T").
Special keys are keys which are off to the side of the normal
keyboard. Not all terminals have them, and how many and where they
are vary from terminal to terminal. The program you are running can
say what action will be taken when a special key is pressed. The
editor understands special keys to be commands. But which commands
depends on the installation. See the terminal-dependent information
or ask a systems person.
You get an escape sequence by typing the "ESCAPE" or "ALTMODE"
character followed by some other character. For example, the
command <INSERT-MODE> might be invoked by the sequence ESC Q,
meaning that the user should type the two characters ESCAPE and "Q"
to get the <INSERT-MODE> command.
- 3 -
2.0 HOW TO START WRITING A FILE
To get started with SED you only need to know how to put text
into your file and how to reach parts of the file which are below
the bottom or above the top of the screen. This section covers the
following topics:
RUNNING AND EXITING THE EDITOR
MOVING THE CURSOR AROUND
TYPING TEXT INTO THE FILE
INSERTING AND DELETING CHARACTERS
MOVING THE SCREEN FORWARD AND BACKWARD IN THE FILE
2.1 RUNNING THE EDITOR
Run SED by typing:
@SED FILE.EXT or
@SED FILE.EXT=
Either form will find the given file (in this case, FILE.EXT)
if it exists. If the file does not exist, the first form will give
you a "File not found" error message; the second form will create
the file and let you edit it.
Also, switches can be included along with the filespecs. The
switches are described under the <SWITCH> command, which comes
later. In any case, the syntax is "@SED FILE.EXT/SWITCH/SWITCH".
2.2 EXITING THE EDITOR
Exit SED by typing <EXIT> (^Z) to save your editing session or
<ABORT> (^C) to forget it.
<EXIT> will save all the changes you have made in your file.
The file will be "backed up", that is, a copy of the file the way it
was before the editing session will be saved. The backup file has
the same name as the regular file, and the extension .BAK.
<ABORT> exits the editor and leaves the file the way it was
before editing began.
2.3 MOVING THE CURSOR AROUND
The cursor is the blinking dash or blot on the screen. If you
type a character it appears where the cursor is and the cursor moves
one place to the right. While editing the cursor can be moved
anywhere on the screen without changing your file. Then when a
character is typed it will appear where the cursor is, both on the
- 4 -
screen and in the file.
The cursor can be moved up, down, left, and right by typing one
of the keys with an arrow on it. The direction of the arrow
indicates the direction which the cursor will move. There is also a
way to move the cursor "home", which means the upper left corner of
the screen; type PF3 [KEYPAD-BLACK].
There are other cursor moving commands. <RETURN> (or
<CARRIAGE-RETURN>) moves the cursor to the start of the next line.
The <TAB> key (and ^I) moves to the next tab stop (tab stops are set
to be every 8 characters). And <BACKTAB> (^U) moves to the previous
tab stop.
There are four more cursor movers. <BEG-LINE> (KEYPAD-4) and
<END-LINE> (KEYPAD-6) move to the beginning and end of the line,
respectively. <UP-TAB> (KEYPAD-8) moves up six lines as if you
typed six <CURSOR-UP>s. And <DOWN-TAB> (KEYPAD-2) moves down six
lines.
Some implementations of SED may use the <LINE> command (not
implemented) in place of <BEG-LINE> and <END-LINE>. <LINE> moves
the cursor to the start of the line it is on. If the cursor already
is at the start of the line, <LINE> will move it to the end of the
line. So <LINE><LINE> will usually get you to the end of the line.
2.4 PUTTING TEXT IN THE FILE
To put text in the file, just type it. The text will appear
where the cursor is. Use the cursor movement commands described
above to move the cursor to the location on the screen where you
want the text to be. The editor makes sure that the screen and the
file always look the same.
To replace one character with another, move the cursor to the
offending character and type the correct one on top of it. That's
all there is to it.
There are ways of inserting words in the middle of lines you
have already typed, of breaking a line in two or combining two lines
into one, of inserting blank lines, and of deleting lines or
characters that are not wanted. All of these, and a lot more
besides, will be covered in later sections of this tutorial.
2.5 INSERTING AND DELETING CHARACTERS
If you want to insert a word between two other words type
<INSERT-MODE> (KEYPAD-ENTER). Then characters you type, instead of
replacing the ones in the file, will be inserted where the cursor
is. The rest of the line will move to the right as you type.
- 5 -
You can get out of insert mode and back into replace mode by
typing <INSERT-MODE> again.
You can delete the character you just typed by typing
<DELETE-CHARACTER> (BACKSPACE). The character to the left of the
cursor will be deleted from the line. If that character is a tab,
the entire tab is deleted. If the cursor is at the start of a line,
<DELETE-CHARACTER> has no effect.
There are other ways both to insert and to delete text. These
will be covered later.
2.6 MOVING THE SCREEN FORWARD AND BACKWARD IN THE FILE
If you type on the bottom line of the screen and then type a
carriage return the screen will roll one line. That is, the top
line disappears, the other lines move up, and a blank line appears
at the bottom. The top line has not been deleted; it is simply
above the viewing window.
You can get the lines above the viewing window back by typing
<ROLL-BACKWARD-LINES> (^W). This command does the opposite of the
above: lines disappear from the bottom, the remaining lines roll
down, and lines which were above the screen appear at the top.
<ROLL-BACKWARD-LINES> will attempt to roll about 8 lines, but it
won't go farther than the beginning of the file (so if you're at the
start of the file and type the command nothing will happen).
similarly, you can roll the screen forward about 8 lines by
typing the <ROLL-FORWARD-LINES> command (^T).
- 6 -
3.0 EDITING AN EXISTING FILE, PART 1
The preceding section did nothing more than get you started.
You can do a lot more than just typing, inserting, and deleting
text. This section gives you a taste of the full power of SED.
These topics are covered in this section:
INTRODUCTION TO COMMANDS AND PARAMETERS
ON-LINE HELP
EDITING LAST TIME'S FILE
ROLLING THE SCREEN A LONG DISTANCE
MOVING TO THE BEGINNING AND END OF THE FILE
INSERTING OR DELETING LINES OR SPACES
COPYING OR MOVING LINES OF TEXT
3.1 INTRODUCTION TO COMMANDS AND PARAMETERS
You know how do roll the screen: just type one of the
<ROLL-LINES> commands, ^T for <ROLL-FORWARD-LINES> or ^W for
<ROLL-BACKWARD-LINES>. Actually, there's more to the general
command format than that.
Each command takes a parameter, which is a value or string used
by the command. For example, the parameter for the <ROLL-LINES>
commands above is the number of lines to roll. Initially there is a
default parameter, in this case, 8 lines. But you can change the
parameter to be any (positive) value you want; the screen will then
roll that many lines until you change the value again.
To give a parameter to a command, type
<ENTER><parameter><COMMAND>
The word <ENTER> means that you press the <ENTER-PARAMETER> key (PF1
[KEYPAD-BLUE]). By doing so you tell SED that what you are about to
type is a command parameter, not a piece of text.
<Parameter> is whatever value you want to give to the command
(don't type the angle brackets). It could be the number of lines or
spaces to do something with, the key to search for, or the text to
insert, depending on what the command expects. As each command is
explained its parameters will be described.
<COMMAND> is the command; the control character, special key,
or escape sequence which does the job you want.
You can even edit parameters. <CURSOR-LEFT> will delete the
most recent character typed; <BACKTAB> (^U) will delete the latest
word; and <ERASE-LINE> (^J) will delete the entire parameter. To
kill the entire parameter and get out of ENTER mode, type the
<RESET> command (RUBOUT or DELETE).
- 7 -
So if you want the screen to roll 4 lines at a time, type
<ENTER>4<ROLL-FORWARD-LINES>
where <ENTER> is PF1 [KEYPAD-BLUE] and <ROLL-FORWARD-LINES> is ^T.
The screen will roll 4 lines. If you want to roll another 4 lines,
just type
<ROLL-FORWARD-LINES>
Certain pairs of commands share a single parameter. If you set
up to roll forward 4 lines at a time, you will roll backward 4 lines
too. This sharing is done where it is natural and expected, like
the key for searching forward or back, the number of lines to insert
or delete.
3.2 ON-LINE HELP
You can get information about any command while you are
editing. Type <HELP> (KEYPAD-3), or <ENTER> twice, then the command
you want help with. Try it.
3.3 GETTING BACK INTO LAST TIME'S FILE
You don't have to tell SED which file you want to edit every
time. Say you were editing THING.GIG and you exited, then later you
want to make some more changes to THING.GIG. You only have to type
@SED
and you will be back in THING.GIG. In fact, you will be set up at
the exact page and cursor position that you were at when you exited.
You don't have to start at the beginning of the file each time you
edit it.
3.4 ROLLING THE SCREEN A LONG DISTANCE
You can now roll the screen forward or backward any number of
lines you want. However, if the file is long and you want to get to
a place several screens-full away, it would be awkward to figure out
how many lines to roll. There are two other commands for
long-distance rolls: <ROLL-FORWARD-PAGES> and <ROLL-BACKWARD-PAGES>
(^Y and ^Q). A page is defined as one screen-full of lines (about
24).
So if you type <ROLL-FORWARD-PAGES> the entire screen will be
rewritten, and the new line at the top of the screen will be the one
beneath the line previously at the bottom of the screen.
- 8 -
The parameter to the <ROLL-PAGES> commands is, naturally, the
number of pages to roll. It is shared by the two commands (ie,
setting it for one sets it for the other, too).
3.5 MOVING TO THE BEGINNING AND END OF THE FILE
There are easy ways to get to the beginning and the end of your
file. To get to the beginning type
<ENTER>0<PERCENT-GOTO>
where the <PERCENT-GOTO> command is ^P. To get to the end type
<ENTER><PERCENT-GOTO>
that is, just <ENTER> and the command, with no parameter.
The full implications of the <PERCENT-GOTO> command will be
covered later.
3.6 INSERTING AND DELETING LINES AND SPACES
So far, as long as you have been typing stuff into your file
things have been all right. But suppose you wanted to add a word,
or even a line of text, in the middle of what you'd already done?
This section shows you two commands, <INSERT-SPACES> and
<INSERT-LINES>, which add air holes to your file, and two commands,
<DELETE-SPACES> and <DELETE-LINES>, which remove unwanted stuff from
the file.
The <INSERT-SPACES> command is ^A. It inserts a space in your
file where the cursor is. The parameter to <INSERT-SPACES> is the
number of spaces to insert.
<DELETE-SPACES> (^S) deletes characters (not just spaces) where
the cursor is. It shares its parameter with <INSERT-SPACES>.
The <INSERT-LINES> command (^D) inserts a blank line where the
cursor is. If the cursor is not at the left margin the line it is
on will be broken in two at the cursor position. The parameter to
<INSERT-LINES> is the number of lines to insert.
<DELETE-LINES> (^F) does the opposite of <INSERT-LINES>, and
shares its parameter. If you delete something accidentally using
<DELETE-LINES>, you can get it back by typing
<ENTER><PUT>
where the <PUT> command is ^G. <PUT> does a lot of things; it will
be described in gruesome detail later.
- 9 -
EXAMPLES
Say the cursor is at the "f" of "five" and you type
<INSERT-SPACES>:
BEFORE: Pack my box with five dozen liquor jugs.
AFTER: Pack my box with five dozen liquor jugs.
You then type <ENTER>3<DELETE-SPACES>:
AFTER: Pack my box with ve dozen liquor jugs.
You type <INSERT-LINES>:
AFTER: Pack my box with
ve dozen liquor jugs.
Then you type a <CARRIAGE-RETURN> to get to the "v" and type
<ENTER>2<INSERT-LINES>:
AFTER: Pack my box with
ve dozen liquor jugs.
3.7 COPYING OR MOVING LINES OF TEXT
SED has two buffers which hold text from the file: the delete
buffer and the pick buffer. "Deleting" text means removing it from
the file and putting it in the delete buffer; "picking" text means
loading it into the pick buffer without changing the edited file.
The contents of either buffer can be inserted anywhere in the file,
or in another file if you wish.
You have already met the delete command: <DELETE-LINES> (^F).
Its parameter is the number of lines to remove (you can remove parts
of lines, too. See the reference manual, but don't worry about it
until you are comfortable with the editor). You can put those lines
back in the file by typing <ENTER><PUT> (the <PUT> command is ^G).
To pick up lines of the file, that is, to load the pick buffer
but not affect the file, use the <PICK> command (^V). As with
<DELETE-LINES>, the parameter is the number of lines to pick. To
insert the lines back in the file, type just <PUT>.
Thus <PUT> is the command which writes out the pick or delete
buffer. <PUT> writes the pick buffer and <ENTER><PUT> writes the
delete buffer. Use the <PICK> command to duplicate lines from your
file; use <DELETE-LINES> to move stuff from one place to another.
- 10 -
4.0 EDITING AN EXISTING FILE, PART 2
This section describes more useful commands, plus a couple of
new features of commands you already know. Wir handlen:
COMPILING AFTER EXITING
SEARCHES
WORD-WISE TAB AND BACKTAB
INSERTING TEXT IN THE FILE USING <PUT>
CHANGING FILES WHILE EDITING
RECOVERING DELETED STUFF
4.1 COMPILING AFTER EXITING
If you exit by typing <ENTER><EXIT> SED will save your file and
execute your latest compile-class command (COMPILE, LOAD, DEBUG,
EXECUTE, etc.).
4.2 SEARCHES
You can search for any text string by typing
<ENTER><string><SEARCH-FORWARD>
where <string> is your search key (without the brackets) and
<SEARCH-FORWARD> is ^R. The file will be searched from the cursor
position to the end (if necessary), and the cursor will be
positioned at the start of the next occurrence of <string>.
Similarly you can search from the cursor position backwards to the
beginning of the file using the <SEARCH-BACKWARD> command (^E).
You can abort a losing search by typing RUBOUT.
You can set up the current search key as a parameter by typing
<ENTER>S<RECALL> (<RECALL> is PF2 [KEYPAD-RED]). You can then edit
the key and use it for another search (or as the parameter for any
other command). Likewise, typing <ENTER>O<RECALL> will get back the
previous search key.
Hint: Searches will go faster if the first character of the key is
infrequent in the file. If you want to look for "EXEC" in a large
file, try "XEC" instead.
4.3 WORD-WISE TAB AND BACKTAB
Tab stops are set every 8 positions, and the <TAB> (TAB or ^I)
and <BACKTAB> (^U) commands move to the next or previous stop,
respectively. However, <TAB> and <BACKTAB> can also be set up to
move to the start of the next (or previous) word or to the end of a
- 11 -
line. To set up these "word-wise" tabs, type
<ENTER>NOT<SWITCH>
where "NOT" is the three letters N, O, T; and <SWITCH> is ^N.
<SWITCH> is a command which sets editor switches, and you are
telling it that you do not want normal tabs (NO Tabs, get it?). You
can get normal tabs back by typing <ENTER>T<SWITCH>.
When you have set up word-wise tabs, you will get the following
effects:
CURSOR AT: <TAB> MOVES TO: <BACKTAB> MOVES TO:
within the line start of next word start of previous word
start of line start of next word end of previous line
last word of line end of line start of previous word
beyond end of line next 8-space tab stop start of last word of line
Word-wise tabs are a lot more fun than regular tabs.
4.4 INSERTING TEXT IN THE FILE USING <PUT>
You can already insert text by using <INSERT-MODE> or by
opening up a hole using <INSERT-SPACES> and then typing the text
over the hole. However, the easiest way is to use the <PUT>
command. Type
<ENTER><string><PUT>
where <string> is whatever you want to insert and <PUT> is ^G. This
has the same effect as opening spaces and typing over them. The
string is inserted where the cursor is.
Furthermore, the editor remembers the string, so if you want to
put it somewhere else you can move there and type <PUT> and the same
string will be inserted at the new location.
4.5 CHANGING FILES WHILE EDITING
If you are editing a file and you want to do something to a
second file, you can get to it by typing
<ENTER><file2><SET-FILE>
where <file2> is the filespecs for your second file and the
<SET-FILE> command is ^B. SED will save the first file (but
remember where you are) and display the first page of the second
file for editing. You can return to the first file by typing just
<SET-FILE>. Then you can get back to the second file by typing
another <SET-FILE>.
- 12 -
You can even toggle back and forth between two positions in the
same file.
When you exit SED your positions in both files are remembered.
If you do not give an extension in your filespecs SED will try
several as defaults. First it will try to find the file with no
extension.
Next SED will try the extension of the file you were last
editing. If you were editing FOO.BAR and your filespec is "SAND"
SED will look for "SAND.BAR". Thus you can jump around among a
family of files by typing only the file name.
If all this fails SED will try each of the following
extensions: MAC, TXT, RNO, FOR, CBL, DAT. If all of these fail you
will (finally) get the "File not found" error message.
The name of the file being edited can be changed using the
/OUT: switch. For example, typing
<ENTER>FOO.BAR/OUT:FUBAR.MAC<SET-FILE>
will set up FOO.BAR for editing. The file will be saved (on exit,
another <SET-FILE>, the <SAVE-FILE> command, or incremental saves)
as FUBAR.MAC. Also, the name of the current file can be changed,
for example, by:
<ENTER>OUT:THING.GIG<SWITCH>
(<SWITCH> is ^N). This will change the name of the current file to
THING.GIG.
There are also other switches which apply to <SET-FILE>, and
other useful features. See the <SET-FILE> and <SWITCH> sections of
the reference manual, DOC:SED.DOC, for details.
4.6 RECOVERING DELETED STUFF
The commands <DELETE-LINES> (^F), <DELETE-SPACES> (^S),
<ERASE-LINE> (^J), <ERASE-WORD> (KEYPAD-.), and <DELETE-CHARACTER>
(BACKSPACE) remove text from the file. If you delete text
accidentally using any of these commands, you can get it back.
<DELETE-LINES> can be recovered from by typing <ENTER><PUT>, as
described in a previous section. The text from the other four
commands can be recovered by typing <ENTER><HELP>.
- 13 -
5.0 EDITOR GOODIES
Now you know nearly all the essentials of SED. The rest of
this tutorial deals with things that can make your life a lot
easier, but which do not give you anything really new. There's even
more fun stuff that isn't covered here. See the editor reference
manual for all the bells and whistles.
Here you will find:
DEFINING PARAMETERS BY MOVING THE CURSOR
MOVING A GIVEN PERCENT OF THE WAY THROUGH THE FILE
<SWITCH>: SETTING SWITCHES OR QUERYING STATUS
ERASING TO THE END OF A LINE
HOW TO EDIT PARAMETERS
5.1 DEFINING PARAMETERS BY MOVING THE CURSOR
You don't need to know how to count in order to issue editor
commands. Instead of typing, say, <ENTER>7<DELETE-SPACES>, you
could type <ENTER> and then move the cursor over the characters you
want to delete (using <TAB> or <CURSOR-RIGHT>). Then type
<DELETE-SPACES>, and the stuff between where the cursor started and
where it ended will be deleted. This method of passing a parameter
to a command is called "cursor movement." It is often a lot easier
to use than counting.
When you initiate cursor movement the editor will type "Parm
defined by cursor movement" at the bottom of the screen as a
reminder.
Cursor movement works across a span of lines, too, and often
can cover a change of both lines and spaces. For example, if the
cursor were at the "b" in "box" and you typed
<ENTER><CARRIAGE-RETURN><TAB><TAB><INSERT-LINES>, you would insert
one blank line and 16 spaces into the file:
BEFORE: Pack my box with five dozen liquor jugs.
This is the thing of the gig
and the gig is where it's at.
AFTER: Pack my
box with five dozen liquor jugs.
This is the thing of the gig
and the gig is where it's at.
In this example the same thing could have been done by typing
<ENTER><CURSOR-DOWN><INSERT-LINES>.
Any key that moves the cursor can be used for a cursor movement
parameter. SED looks only at where the cursor starts and where it
ends up; It does not know how the cursor gets there. It does not
matter what the cursor passes over on the way. So the quickest way
- 14 -
of getting the cursor where you want it is the best (an easy way to
get to the bottom of the screen is to type <HOME><CURSOR-UP>).
5.2 MOVING A GIVEN PERCENT OF THE WAY THROUGH THE FILE
The <PERCENT-GOTO> command (^P) was touched upon as the means
of getting to the start or the end of the file. Actually, it can be
used to move to any amount of the way through the file. Typing
<ENTER>37<PERCENT-GOTO>
will display a page of the file that is about 37% of the way through
it. The beginning of the file is 0%; the end is 100%. A shorthand
way of asking for the end of the file is to type simply
<ENTER><PERCENT-GOTO>
5.3 <SWITCH>: SETTING SWITCHES OR QUERYING STATUS
The <SWITCH> command (^N) has two uses. The first is to set
switches to get SED to perform the way you want it to. You have
already seen the /TABS switch, which sets up word-wise or normal
tabs. The other function of <SWITCH> is to display information
about the file you are editing or the setting of the nominal
parameters.
Switches can also be given when running SED, or in SED.INIT.
To get file status information, just type <SWITCH> without a
parameter. The editor will write on the bottom of the screen a line
which looks like:
FILE: SED.RNO LINE: 534(67%) POS'N: 1 ALT: <CHALL>FOO.BAR
This line says that the current file is SED.RNO, the cursor is at
the start of the 534th line, which is 67% through the file, and the
alternate file is FOO.BAR.
To find out what the nominal parameters are set to, type
<ENTER><SWITCH>. This will give you a line like:
RL:8, RP:1, PC:2, SL:8, IL:1, IS:8, PK:3,8, TB:8; KEY:th SUB:FOO
- 15 -
This message tells you that the following values are set:
LINES TO ROLL: 8
PAGES TO ROLL: 1
PERCENT-GOTO: 2
SLIDE: 8
INSERT/DELETE LINES: 1 LINE AND 0 SPACES
INSERT/DELETE SPACES: 8
PICK: 3 LINES AND 8 SPACES
TAB SIZE: 8
SEARCH KEY: th
SUBSTITUTE STRING: FOO
So if you type a <PERCENT-GOTO> command with no parameter you
will go to the 2% point, a <DELETE-LINES> will delete 1 line (and
<INSERT-LINES> will insert 1 line), and a <PICK> will pick up 3
lines.
There are a number of switches which you can set to tailor SED
to your own tastes. Here are the most useful ones. See the editor
reference manual, DOC:SED.DOC, for a description of all the
switches.
AGAIN:n edit the same file again, n percent through
BACKUP make a backup file on exit
CASE make searches case-dependent ("THE" is different from "the")
CREATE always create file if not found with <SET-FILE> or RUN command
GOTO:n on a SET-FILE or initial run, start n percent into the file
LENG:n make SED think the terminal is n lines long
QUICK don't display the file on startup or <SET-FILE>
READ make the file read-only (file-altering commands are illegal)
ISAVE:n do an incremental save every n commands
RESET reset parameters to their starting values after each command
SAVE:n do an incremental save every n characters of type-in
STRIP strip off SOS line numbers before editing a file
TABS:n set tabs to be every n spaces, or set up word-wise tabs
WIDTH:n make SED think the terminal is n spaces wide
SED starts with BACKUP/CASE/NOISAVE/NOSAVE/NOSTRIP/TABS:8.
LENGTH and WIDTH are the dimensions of your terminal.
Typing NOSWITCH will negate the effect described above. NOBACK
will cause no backup file to be made, and NOCASE will make searches
be case-independent. NOGOTO doesn't make sense, but probably parses
as the same as GOTO.
Ideas: /NOTABS is more fun than /TABS. If you don't like the
clutter of .BAK files, set /NOBACK in SED.INIT. Then set /BACK only
when you are editing a file and you want an unedited copy. To look
at a file and ensure it won't be changed use /READ in the <SET-FILE>
or monitor run command.
- 16 -
5.4 <ERASE-LINE>: ERASE FROM CURSOR TO END OF LINE
The <ERASE-LINE> command (^J) deletes all characters from the
cursor position to the end of the line. It performs exactly as if
you typed <ENTER>1000<DELETE-SPACES>.
In a parameter <ERASE-LINE> can be used to delete the entire
parameter or cancel cursor movement.
Typing <ENTER><HELP> will recover an erroneously erased line.
5.5 HOW TO EDIT PARAMETERS
If you make a mistake while typing a parameter you can correct
it in a number of ways. In a parameter,
TO DELETE THE TYPE (KEY:)
latest character <CURSOR-LEFT> LEFT
<DELETE-CHARACTER> BACKSPACE
latest word <BACKTAB> ^U
<ERASE-WORD> KEYPAD-.
entire parameter <ERASE-LINE> ^J
Also, to forget the parameter entirely type <RESET> (RUBOUT or
DELETE).
Here's another useful feature: Suppose you type
<ENTER>LABEL1:<SEARCH-FORWARD>
and then realize you wanted to search for "LABEL", not "LABEL:".
You can abort the search by typing RUBOUT (for your information).
Then type the <RECALL> command (PF2 [KEYPAD-RED]), which displays on
the bottom line
>LABEL1:
You can then type a <CURSOR-LEFT> to get rid of the ":" and
<SEARCH-FORWARD> to go hunt for "LABEL".
Thus the <RECALL> command acts just as if you typed <ENTER>
followed by the latest parameter you typed. It is useful in three
instances: when you typed an almost-right parameter, when you typed
the right parameter but the wrong command, and when you want to see
what the heck that last parameter was.
- 17 -
6.0 MORE EDITOR GOODIES
Here are a couple more conveniences that you will wonder how
you ever got along without:
RECTANGULAR INSERT/DELETE SPACES
TOKEN PARAMETERS
<PICK>ING OR <DELETE>ING A LOT OF STUFF
SCANNING
CHANGING THE CASE OF CHARACTERS OR STRINGS
SETTING OR CLEARING THE SPLIT-SCREEN WINDOW
ERASING WORDS FROM THE FILE
SUBSTITUTING (SEARCH AND REPLACE)
6.1 RECTANGULAR INSERT/DELETE SPACES
Say you have a diagram which you want to move to the right.
You could do an <INSERT-SPACES> command on each line the diagram is
on. Or you could save yourself some typing by opening a rectangle
of spaces, as follows.
Move the cursor to the first line and type <ENTER>. Move the
cursor right as many spaces as you want to open (this is, of course,
a cursor movement parameter). Move the cursor down past all the
lines you want to act upon (they must all be on the screen). Then
type <INSERT-SPACES>.
You defined a rectangle whose opposite corners were the
starting and ending positions of the cursor, and that rectangle got
filled up with spaces, pushing everything over.
The same sort of thing happens with <DELETE-SPACES>, except, of
course, the interior of the rectangle is deleted from the file.
6.2 TOKEN PARAMETERS
Sometimes the parameter you want is looking up at you from the
terminal screen. Instead of typing it you can have pick the
parameter up from the file. Such a parameter is called a token.
To get a token parameter, position the cursor at the start of
the thing you want and type <ENTER><COMMAND> (fill in the desired
command). Either the "word" at the cursor location or the length of
that word will be taken as the command's parameter. A "word" is
defined to be the text starting at the cursor and extending to the
first non-alphanumeric character.
If the command takes a numeric parameter the size of the token
is used, otherwise the actual string will be used. For example, to
delete a word from the file, position to it and type
<ENTER><DELETE-SPACES>. To search for the word at the cursor
- 18 -
position type <ENTER><SEARCH-FORWARD>.
Not all commands allow token parameters. You've seen the
<PERCENT-GOTO> and <PUT> commands, where <ENTER><COMMAND> has a
special non-token meaning. However, in general if a token makes
sense for a command it is legal. Experiment and see what happens.
6.3 PICKING OR DELETING A LOT OF STUFF
Using the <MARK> (KEYPAD-7) command, you can mark your current
position in the file, move forward or backward to any other
position, and do a <PICK> or <DELETE-LINES> which will affect all of
the text between the mark and the ending cursor position. You can
use <ROLLS>, <SEARCHES>, <PERCENT-GOTO>, or any other command which
does not modify the file, to get to the other end of the text you
want to work with. The <PICK>ed or <DELETE>d text can be <PUT> back
in the file in the normal fashion (by typing <PUT> or <ENTER><PUT>).
The MARK command thus changes the action of the <PICK> and
<DELETE-LINES> (with no parameter) commands. After <MARK> is typed
and until the file is modified, <PICK> or <DELETE-LINES> will work
with the mark, not with the current parameter. After the <PICK> or
<DELETE-LINES> is done the mark goes away.
So if the nominal lines to pick is 1, and you type
<MARK>
<ENTER><PERCENT-GOTO>
<PICK>
you will pick up all the text from where the mark is to the end of
the file. If you do another <PICK> you will pick up one line.
6.4 SCANNING
Scanning is where SED will to a <ROLL-FORWARD-LINES> or
<ROLL-BACKWARD-LINES>, wait a little, then roll again. It will keep
rolling and waiting until you tell it to stop.
To start scanning type <ENTER><ROLL-FORWARD-LINES> (or
<-BACK->). To stop type any character or RUBOUT.
6.5 CHANGING THE CASE OF CHARACTERS OR STRINGS
The <CASE> command (KEYPAD-9) changes the case of the letters
starting where the cursor is. Two switches control way <CASE>
works: /INVRT and /RAISE (use the <SWITCH> command, ^N, to set or
clear switches). If /INVRT is set (which is the default) then the
case of all the letters is inverted: upper is changed to lower and
- 19 -
lower to upper.
If /NOINVRT is set then the setting of /RAISE is used. If
/RAISE is set (default), lower case characters at the cursor will be
changed to upper case. Upper case and non-alphabetic characters are
unaffected. Likewise, if /NORAISE is set, upper case characters are
changed to lower case.
The parameter to <CASE> is the number of characters to look at
and maybe change the case of. You can use cursor movement to make
<CASE> work for more than one line. For example, suppose the cursor
is on the "b" and you type <ENTER><DOWN><CASE>:
BEFORE: Pack my box with five dozen liquor jugs.
Pack my box with five dozen liquor jugs.
AFTER: Pack my BOX WITH FIVE DOZEN LIQUOR JUGS.
PACK MY box with five dozen liquor jugs.
6.6 SETTING OR CLEARING THE SPLIT-SCREEN WINDOW
The <WINDOW> command (KEYPAD-1) allows you to divide the
terminal screen into upper and lower halves and display (and edit) a
file in each half. If windowing is in effect, typing <WINDOW> again
will bring the screen back to the normal single-file mode.
After <WINDOW> is typed the file you are currently editing will
appear in the top half of the screen and the bottom half will be
blank. If you do a <SET-FILE> (with or without a parameter), the
top window will remain unchanged and the new file will appear in the
bottom window. You can then use <SET-FILE>s to toggle between the
two windows or to change the file which appears in the window.
6.7 ERASING WORDS FROM THE FILE
The <ERASE-WORD> command (KEYPAD-.) deletes the TOPS-20 style
word which ends at the cursor position.
<ERASE-WORD> also can be used to erase words in parameters.
Typing <ENTER><HELP> will recover an erroneously erased word.
6.8 SUBSTITUTING (SEARCH AND REPLACE)
The <SUBSTITUTE> command (^~) searches forward from the cursor
position for a string (the key) and substitutes another string (the
substitute string) for it. You can tell <SUBSTITUTE> how many times
to repeat the process.
- 20 -
There are three types of parameters to <SUBSTITUTE>:
<ENTER>Sstring1 <ENTER>Rstring2 <ENTER>number
The first sets up string1 as the search key. The string must
be preceded by the letter "S" (or "s"). The search key is shared
with the <SEARCH-FORWARD> and <SEARCH-BACKWARD> commands.
The second parameter sets up string2 as the entity to replace
occurrences of string1. The string must be preceded by the letter
"R" (or "r"). String2 may be null, meaning that string1 will be
deleted wherever it is found.
The third parameter tells how many times to perform the search
and substitute.
Searching is done the same as for the <SEARCH> commands, so
wild characters, case independence, and aborting the command with
RUBOUT all work.
One, two, or all three of these parameters may be given at
once, in any order. The command
<ENTER>SFOO<ENTER>Rfoo<ENTER>1000<SUBSTITUTE> will change all
occurrences of "FOO" to "foo" from the cursor to the end of the file
(well, 1000 times, anyway).
Following the above command with
<ENTER>SFUBAR<ENTER>1000<SUBSTITUTE>
will change all occurrences of "FUBAR" to "foo". Note that the
substitute key was not given, so it defaulted to its latest setting.
Sometimes it is useful to set up the parameters, think about
them, and perform the substitute when everything looks right. If
the numeric parameter is omitted, them <SUBSTITUTE> will set up the
key and substitute string, but will not execute. Thus the commands
<ENTER>SGIG<ENTER>RTHING<SUBSTITUTE>
<ENTER>1<SUBSTITUTE>
<SUBSTITUTE>
<ENTER>10<ENTER>STHIS<SUBSTITUTE>
<SUBSTITUTE>
works as follows:
1) Only sets up the parameters.
2) Does one <SUBSTITUTE> since there was a numeric parameter.
3) Also does one <SUBSTITUTE>.
4) Changes the search key to "THIS" and does 10 iterations.
5) Also does 10 iterations.
Note: <SUBSTITUTE> is the only command for which multiple <ENTER>s
are legal. For other commands, all <ENTER>s except the first one
are ignored.
- 21 -
7.0 USEFUL COMMANDS FOR SPECIAL CASES
This last section describes commands which are not used very
much, but which come in handy when they are needed. For example,
files will usually be less than 80 characters wide, but if you are
editing a lineprinter file you will want to know how to reach the
part of it that is off the right of the viewing window. Topics
covered here are:
WHAT TO DO IF THE FILE IS WIDE
HOW TO PUT CONTROL CHARACTERS IN THE FILE
MANY WAYS TO SAVE THE FILE
REPAIRING A FRAGGED SCREEN
REPEATING COMMANDS OR INVENTING YOUR OWN
SETTING UP DEFAULT SWITCHES IN SED.INIT
CALLING THE EXEC FROM SED
7.1 WHAT TO DO IF THE FILE IS WIDE
The <SLIDE-LEFT> (KEYPAD-- [ESC-L]) and <SLIDE-RIGHT> (KEYPAD-,
[ESC-T]) commands move the viewing window left and right. Note that
you are sliding the window over the file, so <SLIDE-RIGHT> shows you
higher-numbered columns.
The parameter to the <SLIDE> commands is the number of columns
to slide.
7.2 HOW TO PUT CONTROL CHARACTERS IN THE FILE
Type <ENTER-CONTROL-CHARACTER> (^O) and the actual character.
To insert a CONTROL-L in the file, type <ENTER-C-C> followed by the
character L. This command can be used within a parameter, too.
Useful control characters to insert are tab (CONTROL-I) and
formfeed or page mark (CONTROL-L).
The <REAL-TAB> command (KEYPAD-0) can also be used to put a tab
in the file. It acts exactly as if you typed "<ENTER-C-C>I". Note
that the <REAL-TAB> command puts a tab character in the file,
whereas the <TAB> command causes the cursor to move but does not
actually modify the file.
7.3 MANY WAYS TO SAVE THE FILE
The file you are editing is saved when you type <EXIT> or
<SET-FILE> (and not saved when you exit using <ABORT>). You can set
the /SAVE: and /ISAVE: switches so that the file is saved
automatically every so many commands or characters of type-in. See
the section about the <SWITCH> command (or, better yet, Appendix D
- 22 -
in the reference manual, DOC:SED.DOC). There's also a command,
<SAVE-FILE> (PF4 [^_]) which saves the file when you type it.
BEWARE: <SAVE-FILE><ABORT> can leave nulls in the file so if
you've changed a file be sure to end the editing session with
<EXIT>.
7.4 REPAIRING A FRAGGED SCREEN
If your terminal screen has been messed up by a system message
or something (or any time you're not confident that the display is
correct) you can force the screen to be rewritten by typing
<REWRITE> (KEYPAD-5). <ENTER>^<RESET> (that's the up-arrow or caret
character) also rewrites the screen. The <RESET> command is RUBOUT
or DELETE.
7.5 REPEATING COMMANDS OR INVENTING YOUR OWN
If you have a sequence of commands which you want to repeat
many times (like doing a search and substitute, for example, or
removing the first 16 characters of every line of the file) you can
store that sequence in a buffer in the editor and then execute it as
many times as you like.
You can also use these buffers to define new editor commands
and attach them to terminal keys. The buffers can be saved and read
from disk or set up in SED.INIT.
The command which does these things is <EXECUTE> (^X). There
are too many details to describe here. Suffice it to say that SED
has a language which includes all the commands plus several
constructs such as DO WHILE and IF CHARACTER or POSITION, and that
you can write and run "programs" in that language. The reference
manual, DOC:SED.DOC, contains all the details.
7.6 SETTING UP DEFAULT SWITCHES IN SED.INIT
When SED begins it tries to find your user default switch file,
SED.INIT on your logged-in directory. If it fails it looks for
SED.INIT on your connected directory. If SED.INIT contains a line
like
/NBA/NT
then SED will set those switches when it begins to run. In this
example the "no backup file" and "no tabs" (ie, word-wise tabs)
switches will be set.
- 23 -
SED.INIT can also be used to set up execute buffers. For
example,
/X:NAME,^[X:$gig^PT^RT
sets up a buffer named "NAME" which does a <PUT> and a carriage
return, and causes it to be invoked when you type ESCAPE-X. That
won't make much sense unless you've read up on the <EXECUTE> command
in the reference manual (DOC:SED.DOC), but hopefully it will make
you curious.
7.7 CALLING THE EXEC FROM SED
The <PUSH> command (^\) creates a fork under SED and runs the
EXEC. Popping from the EXEC will return you to the editing session
as you left it.
- 24 -
APPENDIX: KEYBOARD LAYOUT
This is the layout for the Digital VT52 terminal. If your
terminal is not a VT52 some commands might be in different positions
(the ones on the keypad certainly will), but this can serve as a
model.
.____.____.____.____.____.____.____.____.____.____.____.____.____.____.
! ! ! ! ! ! ! ! ! ! ! ! ! !ERAS!
! ! ! @ ! # ! $ ! % ! ^ ! & ! * ! ( ! ) ! _ ! + !SUB !CHAR!
! 1 ! 2 ! 3 ! 4 ! 5 ! 6 ! 7 ! 8 ! 9 ! 0 ! - ! = !~ ` !bksp!
!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.__!_.
!ROLL!ROLL!SRCH!SRCH!ROLL!ROLL!BACK! !ENTR!PERC! ! !ERAS!RE- !
!BK P!BK L!BACK!FWD !FW L!FW P!TAB !TAB !CCH !GOTO! ] ! | !LINE!SET !
! q ! w ! e ! r ! t ! y ! u ! i ! o ! p ! [ ! \ !lnfd! del!
!____!____!____!____!____!____!____!____!____!_.__!_.__!____!____!____!
!INS !DEL !INS !DEL ! !ERAS!ERAS!SLID!SLID! ! ! ! !
!SPAC!SPAC!LINE!LINE!PUT !CHAR!LINE!LEFT!RGHT! : ! " ! } !RETURN !
! a ! s ! d ! f ! g ! h ! j ! k ! l ! ; ! , ! { ! !
!____!____!____!____!____!____!____!____!____!_.__!_.__!____!____.__!
! ! ! ! !SET ! !RE- ! ! ! ! ! !
!EXIT!EXCT!ABRT!PICK!FILE!SWCH!TURN! < ! > ! ? ! shift !rept!
! z ! x ! c ! v ! b ! n ! m ! , ! . ! / ! ! !
!____!____!____!____!____!____!____!____!____!____!_______!____!
Numeric keypad to the right of the normal keyboard:
.____.____.____.____.
! !RE- ! !CUR !
!ENTR!CALL!HOME! UP !
!blue!red !blck! /\ !
!____!____!____!____!
! !UP- ! !CUR !
!MARK!TAB !CASE!DOWN!
! 7 ! 8 ! 9 ! \/ !
!____!____!____!____!
!BEG-!RE- !END-!CUR !
!LINE!WRIT!LINE!RGHT!
! 4 ! 5 ! 6 ! -> !
!____!____!____!____!
!WIN-!DOWN! !CUR !
!DOW !TAB !HELP!LEFT!
! 1 ! 2 ! 3 ! <- !
!____!____!____!____!
! !ERAS!INS !
!REAL-TAB !WORD!MODE!
! 0 ! . !entr!
!_________!____!____!
- 25 -