SE
Section: User Commands (1)
Updated: ifelse(GITVAX,YES,GT-SWT,local)
Index
Return to Main Contents
NAME
se - screen editor
SYNOPSIS
se
ifelse(HARD_TERMS,YES,
[
-t
<term> ],)
[ file ... ] [ -option ... ]
DESCRIPTION
Se
is a screen oriented version of
ed(1).
It accepts the same
commands with a few differences.
ifelse(HARD_TERMS,YES,,`divert(-1)')
Se
must be run from a CRT terminal and must be told what sort
of terminal it is; hence the <term> parameter. The terminals
currently supported are:
adds980 bee200 haz1510 sol vi200
adds100 cg hp21 trs80 vi50
adm31 esprit ibm ts1
adm3a fox isc8001 tvi950
anp gt40 netron tvt
bee150 h19 sbee vc4404
If no terminal type is specified
se
looks to see if you have the shell variable "TERM" set; if so,
se
recognizes that value as
your terminal type.
ifelse(HARD_TERMS,YES,`divert(-1)',divert)
Se
must be run from a CRT terminal.
To use
se
on your terminal, your terminal must be able to do cursor positioning,
and there must either be an entry for your terminal in the
ifelse(S5R2,YES,
/usr/lib/terminfo/?/*
database,
/etc/termcap
file)`,'
or you must have the
ifelse(S5R2,YES,`('lqTERMINFO('rq',`('lqTERMCAP('rq')
environment variable
set to
ifelse(S5R2,YES,
the pathname of a directory containing an entry for it,
a termcap entry or the name of a file containing one)
(see
ifelse(S5R2,YES,curses(3X),termlib(3))
for details).
Se
uses the
ifelse(S5R2,YES,curses(3X),termlib(3))
terminal operations library, which
retrieves terminal capabilities from the
ifelse(S5R2,YES, /usr/lib/terminfo, /etc/termcap)
database.
Se
looks to see if you have the shell variable "TERM" set; if so,
se
recognizes that value as
your terminal type.
Se
will exit if any one of the following is true:
- 1.
-
You do not have the shell variable "TERM" set.
- 2.
-
The
ifelse(S5R2,YES, /usr/lib/terminfo, /etc/termcap)
database
cannot be found.
- 3.
-
Your terminal does not have an entry in the
ifelse(S5R2,YES,terminfo,termcap)
database,
or in the
ifelse(S5R2,YES,`('lqTERMINFO('rq',`('lqTERMCAP('rq')
environment variable.
- 4.
-
Your terminal does not have cursor motion.
ifelse(HARD_TERMS,YES,divert,)
Se
first
clears the screen,
draws in its margins,
and executes the commands in the file
$HOME/.serc,
if it exists.
It then processes the command line,
obeying the options given there, and begins
reading your file (if you specified one). The screen it draws
looks something like this.
(The parenthesized numerals are not part of the screen layout,
but are there to aid in the following discussion.)
(1) (2) (3)
A |
B |#include <stdio.h>
C |
D *| register int i;
E |
. -> | for (i = 1; i <= 12; i++)
G | putc ('\n', stderr);
$ |
cmd> |_ (4)
11:39 myfile UNIX ....(5).........................
The display is divided into five parts:
(1) the line number area,
(2) the mark name area,
(3) the text area,
(4) the command line, and
(5) the status line.
The current line
is indicated by the symbol "." in the
line number area of the screen.
In addition, a rocket
("->")
is displayed to make the current line
more obvious. The current mark name of each line is shown in the
markname area just to the left of the vertical bar.
Other information, such as the
number of lines read in, the name of the file, and the time of day, are
displayed in the status line.
The cursor is positioned at the beginning of the command
line, showing you that
se
awaits your command. You may now enter any of the
ed
commands and
se
will perform them, while making sure that
the current line is always displayed on the screen.
You can set
options to control the behavior of
se
on the command line, simply by using a "-", followed by
the option letter, and any parameters that the option may take.
These options can also be set after invoking
se
with the options command, "o", explained in detail in the section
on commands. Here is a summary:
<opt> = a | c | d[<dir>] | f | g | h | i[a | <indent>] | k |
l[<lop>] | lm[<col>] | m | p[s | u] | s[<filetype>] |
t[<tabs>] | u[<char>] | v[<col>] | w[<col>] |
x | y[<key>] | z | -[<lnr>]
There are only a few other things that you need know to
successfully use
se:
- 1.
-
If you make an error,
se
automatically displays an error message in
the status line. It also leaves
your command line intact so that you may change it using
in-line editing commands (see the "v" command).
If you don't want to bother with changing the command, just hit
DEL
to erase the command.
- 2.
-
The "p" command has a different meaning than in
ed.
When used with line
numbers, it displays as many of the lines
in the specified range as possible (always including the last line).
When used without line numbers, "p" displays the
previous page.
- 3.
-
The ":" command positions a specified line at the
top of the screen (e.g., "12:" positions the screen so that
line 12 is at the top). If no line number is specified, ":"
displays the next page.
Keeping these few differences in mind, you will see that
se
can perform all of the
functions of
ed,
while giving the advantage of a "window" into
the edit buffer.
When
se
is running at the School of Information and Computer Science at Georgia Tech,
it starts off in Software Tools compatibility mode.
In this mode, the pattern matching characters and command letters
are identical to those of the version of
se
which runs on Prime computers under the Georgia Tech Software Tools Subsystem.
This mode is indicated by the message "SWT" in the status line.
Software Tools compatibility mode is designed to ease the transition to
UNIX
for Georgia Tech I.C.S. users
who are already familiar with the Georgia Tech
Software Tools Subsystem.
The discussion immediately below pertains to regular expressions and command
letters when in Unix mode. Unix mode is indicated by the message
"UNIX" in
the status line (see the example screen above), and is the default at any
place but the I.C.S. school at Georgia Tech.
The "op" command, discussed below under the "o" (option)
command, controls
which mode
se
operates in.
The discussion there indicates which characters are used for which commands
when in Software Tools compatibility mode.
Below is a summary of line number expressions, regular expressions
and commands.
Where there is no difference between
se and ed
no explanation is given.
Line Number Expressions
<n> <n>th line.-
. current line.-
$ last line.-
^ previous line.-
- previous line.-
capital letter <A>-
<A>th line on the screen.
Se
has a number of features that take advantage of the window
display to minimize keystrokes and speed editing.
In the line number area of the screen,
se
displays a capital letter
for each line, but in "absolute line number" mode (controlled by the
"oa" command; see the options command)
se
displays the actual line number of each line.
# -
number of the first line on the screen.
/regular expression[/] next line with pattern.-
?regular expression[?] previous line with pattern.-
>name-
number of the next line having the given markname
(search wraps around, like //).
<name-
number of the previous line having the given markname
(search proceeds in reverse, like ??).
<expression>-
any of the above operands may be combined with plus
or minus signs to produce a line number expression. Plus
signs may be omitted if desired (e.g., /parse/-5, /lexical/+2,
/lexical/2, $-5, .+6, .6).
Unlike
ed, se
does not recognize trailing "+" or "-" signs. They must always
be followed by a integer. Successive "+" or "-" signs
(e.g. "--") are also not allowed.
Like
vi(1), se
will allow you to leave off the trailing delimiter in
forward searches, backward searches, in the substitute command,
the join command,
and in the transliteration command ("y" or "t",
for UNIX and SWT modes
respectively).
This is true whether or not Software Tools compatibility mode
is in effect.
Regular Expression Notation
^-
beginning of line if first character in regular expression.
.-
any single character other than newline.
$-
end of line if last character in regular expression.
[<ccl>] [^<ccl>]-
character set.
*-
0 or more matches of the preceding regular expression element.
\-
ignore special meaning of the immediately following character
except "\(" and "\)".
\(<regular expression>\)-
Tags the text actually matched by the sub-pattern
specified by <regular expression> for use in the replacement part
of a substitute
command.
&-
Appearing in the replacement part of a substitute command, represents
the text actually matched by the pattern part of the command.
%-
Appearing as
the only character in the replacement part,
represents the replacement part used in the previous substitute command.
(This allows an empty replacement pattern as well.)
If there are other characters in the replacement part along with the "%",
the "%" is left alone.
\<digit>-
Appearing in the replacement part of a substitute command,
represents the text actually matched by the tagged sub-pattern
specified by <digit>.
File names
Se
will expand environment variables which appear anywhere in
a path name. Identifiers in a path name are treated as
environment variables if they start with a dollar sign "$".
A real "$" can be used if it is escaped.
If the named environment variable is not found, it is
deleted from the path name. This presents no difficulty,
since multiple contiguous slashes are allowed in path names.
The expanded path name will be placed in the status line.
The .serc File
When
se
starts up, it tries to open the file
.serc
in your home directory.
If that file exists,
se
reads it, one line at a time, and executes each line as a command.
changequote([])
If a line has a `#' as the
changequote
first
character on the line, or if the line is empty,
the entire line is treated as a comment,
otherwise it is executed.
Here is a sample
.serc
file:
# turn on unix mode, tabs every 8 columns, auto indent
opu
ot+8
oia
The
.serc
file is useful for setting up personalized options,
without having to type them on the command line every time, and without
using a special shell file in your bin (for
sh(1))ifelse(BSD,YES,`,'
or a special alias (for
csh(1))).
In particular, it is useful at the I.C.S. school at
Georgia Tech for automagically turning
on Unix mode, for users who are familiar with the
UNIX
system.
Command line options are processed
after
commands in the
.serc
file, so, in effect, command line options can be used to over-ride the
defaults in your
.serc
file.
NOTE:
Commands in the
.serc
file do
not
go through that part of
se
which processes the special control characters (see below), so
do not
use them in your
.serc
file.
Commands
- (.)a[:text] Append
-
If the command is followed immediately by a colon, then
whatever text follows the colon is inserted without entering
"append" mode.
- (.,.)c[:text] Change
-
If the command is followed immediately by a colon, then
whatever text follows the colon is inserted in place of the named lines
without entering "append" mode.
- (.,.)d Delete
-
- e["!"|"x"] [filename] Enter
-
"e!", enter now, is the same as "E" in
ed.
"ex" enters the file with "XTABS" turned on, i.e. expand any tabs to
blanks. File names with extensions "s", "c", "h", "f" and "r", are
automatically entered with "XTABS" turned on.
- f [filename] File
-
- (.,$)g/reg expr/command Global on pattern
-
- none h[stuff] Help
-
This command provides access to on-line documentation on
the screen editor.
"Stuff" may be used to select which information is displayed.
The help command will display information which is correct
for both UNIX and SWT modes.
- (.)i[:text] Insert
-
If the command is immediately followed by a colon, then
whatever text follows is inserted without entering "append" mode.
The current line pointer is left at the last line inserted.
- (^,.)j[/stuff[/]] Join
-
Join is basically the same in
se and ed
except if no line numbers are specified, the default
is to join the previous line with the current line (as opposed
to the current line and the next line), and
se
allows you to indicate what is to replace the newline(s) in "stuff".
The default is a single blank. If you do specify "stuff", the trailing
delimiter is optional. "j/" is considered the same as "j//",
i.e., the newline is deleted.
- (.,.)k[m] marK
-
Se
allows marks to be any
single character other than a newline. If "m" is not
present, the lines are marked with the default name of blank.
(Ed
allows only lower case letters to be marks.)
- none l Locate
-
The Locate command places the system name into the status line
(e.g. "gatech" or "gitpyr").
This is so that one
can tell what machine he is using from within the screen
editor. This is particularly useful for installations with
many machines that can run the editor, where the user can
switch back and forth between them, and become confused as
to where he is at a given moment.
- (.,.)m<line> Move
-
- (.,.)n[m] Name
-
If "m" is present, the last line in the
specified range is marked with it and all other lines having that
mark name are given the default mark name of blank.
If "m" is not
present,
the names of all lines in the range are cleared.
- none o[stuff] Option
-
Editing options may be queried or set. "Stuff" determines which
options are affected.
Options for
se
can be specified in three ways;
in the
.serc
file, on the command line that invokes
se,
or with the "o" command.
To specify an option
with the "o" command, just enter "o" followed immediately by
the option letter and its parameters. To specify an option on the
command line, just use "-" followed by the option letter and its
parameters.
With this second method, if there are imbedded spaces in the parameter
list, the entire option should be enclosed in quotes. For
example, to specify the "a" (absolute line number) option
and tab stops at column 8 and every fourth thereafter with the
"o" command, just enter
oa
ot 8 +4
when
se
is waiting for a command.
To enter the same options on the invoking command line, you might
use
se myfile -a "-t 8 +4"
You may also choose to put options that you will always want into
your
.serc
file. Commands in the
.serc
file should look exactly the same
as they would if they were typed at the command line.
Command line options will always over-ride option
commands given in your
.serc
file.
The following summarizes the available
se
options:
-
- a
-
causes absolute line numbers to be displayed in the line number area
of the screen. The default behavior is to display upper-case letters
with the letter "A" corresponding to the first line in the window.
- c
-
inverts the case of all letters you type (i.e., converts
upper-case to lower-case and vice versa). This option causes
commands to be recognized only in upper-case and alphabetic line
numbers to be displayed and recognized only in lower-case.
In this mode,
se
displays the line number letters in lower case
and expects its command letters in upper case. Unshifted letters
from the terminal are converted to upper case and shifted
letters to lower case.
- d[<dir>]
-
selects the placement of the current line pointer following
a "d" (delete) command. <dir> must be either ">" or "<".
If ">" is specified, the default behavior is
selected: the line following the deleted lines becomes the new
current line. If "<" is specified, the line immediately preceding
the deleted lines becomes the new current line. If neither is
specified, the current value of <dir> is displayed in the status
line.
- f
-
selects Fortran oriented options. This is equivalent to specifying
the "t7 +3" option, and "XTABS" is turned on (i.e.
tabs are expanded).
(On the primes, this would also turn on the "c" option, however the
UNIX
fortran compiler,
f77(1),
only recognizes lower case input.)
- g
-
controls the behavior of the "s" (substitute) command
when it is under the control of a "g" (global) command.
Initially, if a substitute inside a global command fails,
se
will not continue with the rest of the lines which might succeed.
If "og" is given, then the global substitute will continue, and lines
which failed will not be affected.
Successive "og" commands will toggle this behavior.
An explanatory message is placed in the status line.
- h
-
controls the use of hardware line insert/delete
on terminals that have that capability.
By default, line insert/delete will be used if available.
It is occasionally useful to turn this option off when using the
editor on a terminal which can't keep up, or if the communications
lines may be scrambling the control characters.
Each successive "oh" merely toggles a switch within the editor.
An explanatory message is placed in the status line.
- i[a | <indent>]
-
selects indent value for lines inserted with "a", "c" and "i" commands
(initially 1).
"a" selects auto-indent which sets the indent to the value which
equals the indent of the previous line.
If neither "a" nor "<indent>" are specified, the current value of
indent is displayed.
- k
-
indicates whether the current contents of your edit buffer
have been saved or not by printing either a "saved" or
"not saved" message on your status line.
- l[<lop>]
-
sets the line number display option.
Under control of this option,
se
continuously displays
the value of one of three symbolic line numbers.
<lop> may be ".", "#", or "$".
If <lop> is omitted, the line number display is disabled.
- lm[<col>]
-
sets the left margin to <col> which must be a positive integer.
This option will `shift' your entire screen to the left,
enabling you to see characters at the end of the line that
were previously off the screen; the characters in columns
1 through <col> - 1 will not be visible. You may continue
editing in the normal fashion. To reset your screen enter
the command "olm 1".
If <col> is omitted, the current left margin column
is displayed in the status line.
- m
-
controls notification of
the presence of existing mail
and/or
the arrival of new mail
in the user's mail file.
The mail file is taken from the "MAIL" shell variable in the user's
environment.
On startup, if the mail file is not empty,
se
will remark,
"You have mail."
Then, if new mail arrives,
se
will remark,
"You have new mail,"
and ring the terminal's bell.
The "m" option simply toggles a notification switch, so that
the user can turn off this notification.
The "om" command displays the current setting of the notify
switch in the status line.
- p[s | u]
-
converts to or from SWT compatibility mode.
The "op" command, by itself, will toggle between SWT mode and UNIX mode.
When running at the I.C.S. school at Georgia Tech,
se
automagically comes up in SWT mode.
The command "opu" will force
se
to use UNIX mode, while the command "ops" will force
se
to use SWT mode.
During initialization,
se
simply checks if it is running at the I.C.S. school at Georgia Tech,
and if it is, it executes an "ops".
(The editor checks if the site name is one of
"gatech",
"stratus",
"nimbus",
or
"cirrus".
If it is, then it figures it is running at the I.C.S. school.
These machines are the CSnet and Clouds Project Vaxes.
Se
also knows about the "gt-" prefix convention
for Georgia Tech machine names.
The site name of your machine can be checked with the "l" command.)
When in SWT mode,
se
uses the following for its patterns and commands:
-
\pattern[\]-
searches backwards for a pattern.
%-
matches the beginning of a line.
?-
matches any character.
~-
is used to negate character classes.
&-
used by itself in the replacement part of a substitute command
represents the replacement part of the previous substitute command.
Otherwise, it represents the matched search pattern. This last is the
same behavior as in Unix mode.
When used by itself in the replacement part of a transliterate command,
it represents the replacement part of the previous transliterate command.
{<regular expression>}-
tags pieces of a pattern.
@<digit>-
represents the text matched by the tagged sub-pattern
specified by <digit>.
@-
is the escape character, instead of \.
y-
copies lines.
t-
transliterates characters.
!-
does the global exclude on markname (see the "~" command, below).
~[<UNIX Command>]-
will fork a shell, or execute <UNIX command> if it is present
(see the "!" command, below).
All other characters and commands are the same for both SWT and UNIX mode.
The help command will always call up documentation appropriate
to the current mode.
- s[d | data | as | s | c | h | n | nr | nroff | p | r | f]
-
sets other options for case, tabs, etc., for
data files, "d" or "data",
assembly files, "as" or "s",
C files, "c",
`include' files "h",
nroff files, "n" or "nr" or "nroff",
ratfor files, "r",
pascal files, "p",
and fortran files, "f".
Options set for data and nroff files are "ow74" and "ot+4";
for assembly files "ot 17+8" and "XTABS" is turned on;
for C, include, pascal and ratfor files
"ow74", "ot+4" and "XTABS" is turned on;
for fortran files
"ot 7+3" and "XTABS" is turned on.
If "XTABS" is turned on then tabs are expanded.
If no argument is specified the options effected by this
command revert to their default value.
- t[<tabs>]
-
sets tab stops according to <tabs>. <tabs> consists of
a series of numbers indicating columns in which tab stops
are to be set. If a number is preceded by a plus sign ("+"),
it indicates that the number is an increment; stops are set
at regular intervals separated by that many columns, beginning with
the most recently specified absolute column number. If no such
number precedes the first increment specification, the stops are
set relative to column 1.
By default, tab stops are set in every third column starting with
column 1, corresponding to a <tabs> specification of "+3".
If <tabs> is omitted, the current tab spacing is
displayed in the status line. Examples
ot 1 4 7 10 13 16 19 22 25 28 31 34 ...
ot +3
ot 7 +3
Once the tab stops are set, the control-i and control-e keys
can be used to move the cursor from its current position forward or
backward to the nearest stop, respectively.
- u[<chr>]
-
Normally,
se
displays a non-printing character (e.g. NEWLINE, TAB ...)
as a blank.
With this option, you can
select the character that
se
displays in place of
unprintable characters. <chr> may be any printable character.
If <chr> is omitted,
se
displays the current replacement character on the status line.
Non-printing characters (such as
se
control characters), or any others for that matter,
may be entered by hitting the
ESC
key followed immediately by the
key to generate the desired character.
Note, however, that the character you type is taken literally,
exactly as it is generated by your terminal, so case conversion
does not apply.
- v[<col>]
-
sets the default "overlay column". This is the column
at which the cursor is initially positioned by the "v" command.
<Col> must be a positive integer, or a dollar sign ($) to indicate
the end of the line. If <col> is omitted, the current overlay
column is displayed in the status line.
- w[<col>]
-
sets the "warning threshold" to <col> which must be
a positive integer. Whenever the cursor is positioned at or
beyond this column, the column number is displayed in the status
line and the terminal's bell is sounded.
If <col> is omitted, the current warning threshold is displayed
in the status line.
The default warning threshold is 74, corresponding to the first column
beyond the right edge of the screen on an 80 column crt.
- x
-
toggles tab compression and expansion ("XTABS").
If XTABS is off, "ox"
turns it on for subsequent "r",
and "w", commands.
Be aware that the "e"
command checks the source option for files;
use the "ex" command to force
tab expansion.
- y[<key>]
-
allows you to edit encrypted files. "oy" followed by a key
will cause the
"e", "r", and "w"
commands to encrypt and decrypt files using
crypt(1).
"oy" by itself will toggle the current encryption setting.
If there is no current key,
se
will ask you for one.
Echoing is turned off while you type your key in, and
se
asks you to type it in twice, just to be sure.
If encryption is turned on, and you type a plain "oy", it will be turned off.
Note that doing so causes
se
to forget the value of the encryption key.
Encryption in indicated by the message
"ENCRYPT" in the status line.
The key is
never
shown on your screen.
- z
-
suspends the editor (puts it in the background)
and returns to the user's shell (either
/bin/csh,
or, on
BRL UNIX
systems,
/bin/sh
with job control turned on (the -J option)).
The editor will warn you if the edit buffer has not been saved.
This is the
only
way to suspend the editor; the editor uses control-z for its own purposes
(see the section on control characters, below).
If you normally run
/bin/sh
without job control,
this command has no effect at all.
At the I.C.S. school at Georgia Tech
only,
if the shell environment variable "RSE" exists, you will not be
allowed to suspend the editor.
This is so that users with mail-only logins may edit their files,
but not do anything else (see the "!" command, below).
This does not apply if
se
is running at someplace other than the I.C.S. school at Georgia Tech.
On
UNIX
systems without the Berkeley job control mechanism, this option
will be recognized, but will have no effect.
Instead, an explanatory message will be placed in the status line.
- -[<lnr>]
-
splits the screen at the line specified by <lnr> which must
be a simple line number within the current window. All lines above
<lnr> remain frozen on the screen, the line specified by <lnr> is
replaced by a row of dashes, and the space below this row becomes
the new window on the file. Further editing commands do not affect the
lines displayed in the top part of the screen. If <lnr> is
omitted, the screen is restored to its full size.
- (.,.)p Print
-
Prints all the lines in the given range.
As much as possible of the range is displayed, always
including the last line; if no range is given, the previous
page is displayed.
The current line pointer is left at the last line printed.
- q[!] Quit
-
"q!", exit immediately, is the same as "Q" in
ed.
- r[x] [filename] Read
-
If no line number is specified, the named file is read starting after current
line (as opposed to
ed
where the file is read at the end of the edit buffer).
"rx" causes tabs to be expanded in the lines read.
- (.,.)s[/reg expr/sub[/][g][p]] Substitute
-
If no pattern and replacement are specified after the "s",
se
will behave as if you had typed "s//%/", i.e. for the
saved search pattern, substitute the saved replacement pattern.
To just delete a pattern, you may type "s/stuff", and
se
will behave as if you had typed "s/stuff//".
- (.,.)t<n> Copy
-
("To" is the
ed
mnemonic).
- u[d] Undo
-
"u" undoes the effects of the previous command, on the
last line
affected (for instance a substitute command).
"ud" undoes the last delete, i.e. it inserts the last deleted line
after the current line.
Se
does not have a global undo capability.
- (.,.)v oVerlay --- screen oriented editing
-
Full screen editing with
se
is accomplished through the
use of control characters for editing functions.
With screen oriented editing,
control characters may
be used to modify text anywhere in the buffer.
A control-v
may be used to quit overlay mode.
A control-f
may be used to restore the current line to its original state and
terminate the command.
Since
se
supports such a large number of
control functions, the mnemonic value of control character
assignments has dwindled to almost zero. About the only thing
mnemonic is that most symmetric functions
have been assigned to opposing keys on the keyboard (e.g.,
forward and backward tab to control-i and control-e, forward
and backward space to control-g and control-h, skip right
and left to control-o and control-w, and so on).
We feel pangs of conscience about this, but can find no
more satisfactory alternative.
If you feel the control character assignments are terrible and
you can find a better way, you may change them by modifying
the definitions in
se
and recompiling.
Except for a few special purpose ones, control characters
can be used anywhere, even on the command line. (This is why
erroneous commands are not erased --- you may want to edit
them.) Most of the functions work on a single line,
but the cursor may be
positioned anywhere in the buffer.
Refer to the next section which describes each control character
in detail.
- (1,$)w[+ | > | !] [filename] Write
-
Write the portion of the buffer specified
to the named file.
If "+" or ">" is given, the portion of the
buffer is appended to the file; otherwise the portion of
the buffer replaces the file.
"w!", write immediately, is the same as "W" in
ed.
- (1,$)x/reg expr/command eXclude on reg expr
-
- (.,.)y[/from/to[/][p]] TranslYterate (sic)
-
The range of characters
specified by "from" is transliterated into the range of
characters specified by "to". The last line on which something
was transliterated is printed if the "p" option is used.
The last line in the range becomes the new current line.
As with the substitute and join commands, and pattern searches, the
trailing delimiter is optional.
Se
saves both the "from" and "to" parts of the transliterate command:
"y" is the same as "y//%/", i.e. transliterate the saved "from" range
into the saved "to" range.
The "%" is special only if it is the only character
in the "to" part of the command.
- (.,.)zb<left>[,<right>][<char>] Draw Box
-
A box is drawn on the given lines, in the given columns,
using the given <char>.
This command can be used as an aid for preparing block diagrams,
flowcharts, or tables.
Line numbers are used to specify top and bottom row positions of the box.
<Left> and <right> specify left and right column positions of the box.
If second line number is omitted, the box degenerates to a horizontal
line.
If right-hand column is omitted, the box degenerates to a vertical line.
If <char> is omitted, it defaults to blank,
allowing erasure of a previously-drawn box.
For example, "1,10zb15,25*" would draw a box 10 lines high
and 11 columns across, using asterisks.
The upper left corner of the box would be on line 1, column 15,
and the lower right corner on line 10, column 25.
- (.)= Equals what line number?
-
- (1,$)~mcommand global exclude on markname
-
Similar to the "x" prefix except that
"command" is performed for all lines in the range that do not have the
mark name "m".
- changequote([])
-
(1,$)'mcommand global on markname
changequote
Similar to the "g" prefix except that
"command" is performed for all lines in the range that have the
mark name "m".
- (.): display next page
-
The next page of the
buffer is displayed and the current line pointer is placed at
the top of the window.
- changequote({})
-
none ![<UNIX command>] escape to the shell.
The user's choice of shell is taken from the "SHELL" environment
variable (if it exists),
and is used to execute <UNIX command> if it is present. Otherwise, an
interactive shell is created.
After an interactive shell exits, the screen is immediately redrawn.
If a command was run, the results are left on the screen, and the
user must type
RETURN
to redraw the editing window.
This is how
vi(1)
behaves.
If the first character of the <UNIX command> is a `!' (regardless of the
current mode, SWT or UNIX), then the `!' is replaced with the text of
the previous shell command.
An unescaped `%' in the <UNIX command> will be replaced with the current
saved file name.
If the shell command is expanded,
se
will echo it first, and then execute it.
This behavior is identical to the version of
changequote
ed
in `USG'
UNIX
5.0 (also known as
UNIX
System V).
At the I.C.S. school at Georgia Tech
only,
if the shell environment variable "RSE" exists,
se
will not allow you to fork a shell.
The editor behaves this way to allow users who have mail-only privileges
to be able to edit their messages, without having access to any
other resources. This does not apply when
se
is running someplace other than the I.C.S. school at Georgia Tech.
Control Characters
The set of control characters defined below can be used for correcting
mistakes while typing regular editing commands, for correcting commands
that have caused an error message to be displayed, for correcting lines
typed in append mode, or for in-line editing using the "v" command.
- control-a
-
Toggle insert mode. The status of the insertion indicator
is inverted.
Insert mode, when enabled, causes the characters you type to be
inserted at the current cursor position in the line
instead of overwriting the characters that were there
previously. When insert mode is in effect, "INSERT" appears
in the status line.
- control-b
-
Scan right and erase. The current line is scanned from the current
cursor position to the right margin until an occurrence of the
next character typed is found. When the character is found, all
characters from the current cursor position up to (but not including)
the scanned character are deleted and the remainder of the line
is moved to the left to close the gap. The cursor is left in
the same column which is now occupied by the scanned character.
If the line to the right of the cursor does not contain the character
being sought, the terminal's bell is sounded.
Se
remembers the last character that was scanned using this
or any of the other scanning keys;
if control-b is hit twice in a row, this remembered character is
used instead of a literal control-b.
- control-c
-
Insert blank. The characters at and to the right of
the current cursor position are moved to the right one column
and a blank is inserted to fill the gap.
- control-d
-
Cursor up. The effect of this key depends on
se's
current mode. When in command mode, the current line pointer is moved
to the previous line without affecting the contents of the command
line. If the current line pointer is at line 1, the last line
in the file becomes the new current line.
In overlay mode (viz. the "v" command), the cursor is
moved up one line while remaining in the same column.
In append mode, this key is ignored.
- control-e
-
Tab left. The cursor is moved to the nearest tab stop
to the left of its current position.
- control-f
-
"Funny" return. The effect of this key depends on the
editor's current mode. In command mode, the current command line is
entered as-is, but is not erased upon completion of the
command; in append mode, the current line is duplicated; in
overlay mode (viz. the "v" command), the current line is restored
to its original state and command mode is reentered (except if
under control of a global prefix).
- control-g
-
Cursor right. The cursor is moved one column to the right.
- control-h
-
Cursor left. The cursor is moved one column to the left.
Note that this
does not
erase any characters; it simply moves the cursor.
- control-i
-
Tab right.
The cursor is moved to the next tab stop to the right of its current
position.
Again, no characters are erased.
- control-k
-
Cursor down. As with the control-d key, this key's effect depends
on the current editing mode. In command mode, the current line pointer
is moved to the next line without changing the contents of the command
line. If the current line pointer is at the last line in the file,
line 1 becomes the new current line. In overlay mode (viz. the
"v" command), the cursor is moved down one line while remaining in the
same column. In append mode, control-k has no effect.
- control-l
-
Scan left. The cursor is positioned according to the character
typed immediately after the control-l. In effect, the current line is
scanned, starting from the current cursor position and moving left,
for the first occurrence of this character. If none is found before
the beginning of the line is reached, the scan resumes with the
last character in the line. If the line does not contain the character
being looked for, the message "NOT FOUND" is printed in the status line.
Se
remembers the last character
that was scanned for using this key; if the control-l is hit twice in
a row, this remembered character is searched for instead of a literal
control-l.
Apart from this, however, the character typed after control-l is taken
literally, so
se's
case conversion feature does not apply.
- control-m
-
Kill right and terminate; identical to the
NEWLINE
key described below.
- control-n
-
Scan left and erase.
The current line is scanned from the current cursor position to the
left margin until an occurrence of the next character typed is found.
Then that character and all characters to its right up to
(but not including) the character under the cursor are erased.
The remainder of the line, as well as the cursor are moved to the
left to close the gap. If the line to the left of the cursor
does not contain the character being sought, the terminal's bell is
sounded.
If control-n is hit twice in a row, the last character scanned for is
used instead of a literal control-n.
- control-o
-
Skip right. The cursor is moved to the first position beyond
the current end of line.
- control-p
-
Interrupt. If executing any command except "a", "c", "i" or
"v",
se
aborts the command and reenters command mode. The command
line is not erased.
This is the only way to interrupt the editor.
Se
ignores the
SIGQUIT
signal (see
signal(2));
in fact it disables generating
quits from the terminal. The editor uses
ASCII FS
(control-\) for its
own purposes, and changes the terminal driver to make control-p be the
interrupt character.
- ifelse(GITVAX,YES, control-q, control-])
-
Fix screen.
The screen is reconstructed from
se's
internal representation of the screen.
- control-r
-
Erase right. The character at the current cursor position
is erased and
all characters to its right are moved left one position.
- ifelse(GITVAX,YES, control-s, control-j)
-
Scan right. This key is identical to the control-l key
described above, except that the scan proceeds to the right from
the current cursor position.
- control-t
-
Kill right. The character at the current cursor position
and all those to its right are erased.
- control-u
-
Erase left. The character to the left of the current cursor
position is deleted and all characters to its right are moved
to the left to fill the gap. The cursor is also moved left one
column, leaving it over the same character.
- control-v
-
Skip right and terminate. The cursor is moved to the current
end of line and the line is terminated.
- control-w
-
Skip left. The cursor is positioned at column 1.
- control-x
-
Insert tab. The character under the cursor is moved
right to the next tab stop; the gap is filled with blanks.
The cursor is not moved.
- control-y
-
Kill left. All characters to the left of the cursor are
erased; those at and to the right of the cursor are moved
to the left to fill the void. The cursor is left in column 1.
- control-z
-
Toggle case conversion mode. The status of the case conversion
indicator is inverted; if case inversion was on, it is turned off,
and vice versa.
Case inversion, when in effect, causes all upper case letters to
be converted to lower case, and all lower case letters to be
converted to upper case (just like the alpha-lock key on some terminals).
You can type control-z at any time
to toggle the case conversion mode. When case inversion is in effect,
se
displays the word "CASE" in the status line.
Note that
se
continues
to recognize alphabetic line numbers in upper case only, in contrast
to the "case inversion" option (see the description of options under the
option command).
ifelse(BSD,NO,`divert(-1)',)
Also note that when running the C-shell,
/bin/csh,
or a Bourne shell with job control (e.g. the
/bin/sh
supplied with
BRL UNIX\c
)
the only way to
suspend (stop) the editor is with the "oz" command
(see the options command, "oz", above).
ifelse(BSD,NO,divert,)
- control-_ (US)
-
Insert newline. A newline character is inserted before
the current cursor position, and the cursor is moved one position
to the right. The newline is displayed according to the current
non-printing replacement character (see the "u" option).
- control-\ (FS)
-
Tab left and erase.
Characters are erased starting with the character at the nearest tab
stop to the left of the cursor up to but not including
the character under the cursor. The rest of the line,
including the cursor, is moved to the left to close the gap.
Use control-p to interrupt the editor.
- control-^ (control-~, RS)
-
Tab right and erase.
Characters are erased starting with the character under the cursor
up to but not including the character at the nearest tab stop to
the right of the cursor. The rest of the line is then
shifted to the left to close the gap.
- NEWLINE
-
Kill right and terminate.
The characters at and to the right of the current cursor
position are deleted, and the line is terminated.
- DEL
-
Kill all. The entire line is erased, along with any error
message that appears in the status line.
- ESC
-
Escape. The
ESC
key provides a means for entering
se's
control characters literally as text into the file. In fact,
any character that can be generated from the keyboard is
taken literally when it immediately follows the
ESC
key.
If the character is non-printing (as are all of
se's
control characters),
it appears on the screen as the current non-printing replacement character
(normally a blank --- see the options command "ou").
FILES
- $HOME/.serc
-
se
initialization file.
- /usr/tmp/<process id>.<sequence_number>
-
for scratch file.
- ./se.hangup
-
where
se
dumps its buffer if it catches a hang-up signal.
- /usr/local/lib/se_h/*
-
help scripts for the "h" command.
DIAGNOSTICS
Self explanatory diagnostics appear in the status line.
CAVEATS
Se
will
never
dump its buffer into an encrypted file when it
encounters a hang-up,
even if encryption was turned on at the time.
SEE ALSO
Software Tools,
Software Tools in Pascal,
Software Tools Subsystem User's Guide,
ifelse(BSD,YES,.IR csh (1)`,',)
ed(1),
crypt(1),
scriptse(1),
sh(1),
vi(1),
signal(2),
ifelse(HARD_TERMS,YES,`divert(-1)',)
ifelse(S5R2,YES,curses(3X)`,',termlib(3)`,')
ifelse(HARD_TERMS,YES,divert,)
ifelse(BSD,YES,tty(4)`,',termio(7)`,')
environ(5),
ifelse(HARD_TERMS,YES,`divert(-1)',)
ifelse(S5R2,YES,terminfo(4),termcap(5))
ifelse(HARD_TERMS,YES,divert,)
BUGS
Can only be run from a script if the script is first passed through
scriptse(1).
Tabs could be handled better. This is because
se
was originally written for Prime computers.
Does not check whether or not it has been put into the background
(this is to allow
se
to be used with the
USENET
news software, which does a poor job
of signal handling for child processes).
Occasionally flakes out the screen when doing line inserts and deletes,
due to problems within the
ifelse(S5R2,YES,curses(3X),termlib(3))
package in putting out the right number of padding characters.
Type a
ifelse(GITVAX,YES, control-q, control-])
to redraw the screen.
The auto-indent feature does not recognize a line consisting
of just blanks and then a "." to terminate input,
when the "." is
not in the same position as the first non-blank character of the
previous line.
ifelse(GITVAX,YES,
The use of control-s and control-q for control characters could be
considered a very poor design choice.
)
ifelse(S5R2,YES,
Se
does not work too well together with the
shl(1)
utility`,' since if the user types a control-z`,' both of the programs
will see it`,' and
shl
will stop
se`,'
while
se
will toggle the case of its input.
)
There is no global undo capability.
The help screens could use a rewrite.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- Line Number Expressions
-
- Regular Expression Notation
-
- File names
-
- The .serc File
-
- Control Characters
-
- FILES
-
- DIAGNOSTICS
-
- CAVEATS
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 06:39:01 GMT, December 12, 2024