Elvis 1.4, part 1 of 8

Steve Kirkendall kirkenda at eecs.cs.pdx.edu
Tue Dec 4 08:27:35 AEST 1990


Elvis is a clone of vi/ex, the standard UNIX editor.  Elvis supports nearly
all of the vi/ex commands, in both visual mode and colon mode.

Elvis runs under BSD UNIX, AT&T SysV UNIX, SCO Xenix, Minix, MS-DOS, Atari TOS,
OS9/68000, and Coherent.  Ports to other operating systems are in progress;
contact me before you start porting it to some other OS, because somebody else
may have already done it for you.

Elvis is freely redistributable, in either source form or executable form.
There are no restrictions on how you may use it.

The documentation will reside in a subdirectory called "doc".  On some systems,
you may need to create this directory before you can extract the documentation.
The "doc/*.man" files are UNIX-style man pages; they are meant to be processed
by "nroff -man".  The "doc/*.doc" files are all chapters of the manual.  They
have already been formatted, and they contain Epson-compatible escape sequences
to control type styles.  A program called "refont" is included for stripping
these out, if necessary.

The file named "Makefile.mix" is used for all systems except MS-DOS.  You
should copy "Makefile.mix" to "Makefile", and then edit "Makefile" to select
the appropriate group of settings for your system.


Author: Steve Kirkendall

E-mail:	kirkenda at cs.pdx.edu

Snail	14407 SW Teal Blvd.  Apt.C
 Mail:	Beaverton, OR   97005

Phone:	(503) 643-6980
: ------------------------ CUT HERE --------------------
test -d doc || mkdir doc || exit 2

if test -f README -a "$1" != -f
then
echo Will not overwrite README
else
echo Extracting README
sed 's/^X//' >README <<\eof
XElvis is a clone of vi/ex, the standard UNIX editor.  Elvis supports nearly
Xall of the vi/ex commands, in both visual mode and colon mode.
X
XElvis runs under BSD UNIX, AT&T SysV UNIX, SCO Xenix, Minix, MS-DOS, Atari TOS,
XOS9/68000, and Coherent.  Ports to other operating systems are in progress;
Xcontact me before you start porting it to some other OS, because somebody else
Xmay have already done it for you.
X
XElvis is freely redistributable, in either source form or executable form.
XThere are no restrictions on how you may use it.
X
XThe documentation will reside in a subdirectory called "doc".  On some systems,
Xyou may need to create this directory before you can extract the documentation.
XThe "doc/*.man" files are UNIX-style man pages; they are meant to be processed
Xby "nroff -man".  The "doc/*.doc" files are all chapters of the manual.  They
Xhave already been formatted, and they contain Epson-compatible escape sequences
Xto control type styles.  A program called "refont" is included for stripping
Xthese out, if necessary.
X
XThe file named "Makefile.mix" is used for all systems except MS-DOS.  You
Xshould copy "Makefile.mix" to "Makefile", and then edit "Makefile" to select
Xthe appropriate group of settings for your system.
X
X
XAuthor: Steve Kirkendall
X
XE-mail:	kirkenda at cs.pdx.edu
X
XSnail	14407 SW Teal Blvd.  Apt.C
X Mail:	Beaverton, OR   97005
X
XPhone:	(503) 643-6980
eof
if test `wc -c <README` -ne 1379
then
echo README damaged!
fi
fi

if test -f KNOWN.BUGS -a "$1" != -f
then
echo Will not overwrite KNOWN.BUGS
else
echo Extracting KNOWN.BUGS
sed 's/^X//' >KNOWN.BUGS <<\eof
X(These are sorted by how irritating they are.  The worst bugs are at the top.)
X
X- It is impossible to edit or view the same file more than once.  It is
X  also impossible to invoke Elvis twice with no arguments when in the same
X  directory.  This is caused by the way the temp file is named based on ".",
X  see function tmpstart() in tmp.c.
X
X- Inserting characters to make a line longer than BLKSIZE-1 (including the
X  newline) causes a crash.  BLKSIZE is 1024 by default.  The shift-J and :join
X  commands protect against this, but something like "9999a!<Esc>" will make
X  Elvis misbehave.  Also, huge files (more than about 500k) cannot be edited.
X
X- autoindent is confusingly different from vi when editing typical
X  indented C code - e.g. after <ESC>o<ESC>xxxxxxxxxxi (x's to column 1)
X  the last i indents again.
X
X  ^U backspaces to the beginning of the line, but it should only backspace to
X  the start of auto-indent.  (A second ^U could reasonably delete the indent
X  too)
X
X- The :@ and :source commands share a single buffer.  This means that they
X  can't call each other.  You can't run :source from within your .exrc file
X  either, for the same reason.
X
X- Commands which delete text before the cursor, such as `dB', don't move the
X  cursor, but they should.  
X
X- Using the substitute command, it is not possible to replace with multi-
X  line text using the ^V^M construct in the replacement string.  Vi allows
X  this as a special case.
X
X- The Elvis.prj file (used by Turbo-C under MS-DOS) does not force large model
X  and the text segment is > 64K.
X
X- The visual "put" commands can't be repeated by hitting ".".
X
X- "!!ls %" doesn't expand %
X
X- Sideways scrolling is unacceptable for slow terminals.
X
X- The ":set number" option is missing, among other things.
X
X- In DOS, the default colors are not very good.
eof
if test `wc -c <KNOWN.BUGS` -ne 1818
then
echo KNOWN.BUGS damaged!
fi
fi

if test -f doc/intro.doc -a "$1" != -f
then
echo Will not overwrite doc/intro.doc
else
echo Extracting doc/intro.doc
sed 's/^X//' >doc/intro.doc <<\eof
X
X     Elvis 1.4                  INTRODUCTION                    Page 1-1
X
X
XE1.  INTRODUCTIONF
X
X        Elvis is  a  clone  of  vi/ex,  the standard UNIX editor.  Elvis
X     supports nearly all of the vi/ex commands, in both visual mode  and
X     colon mode.  
X
X        Like  vi/ex,  elvis stores most of the text in a temporary file,
X     instead of RAM.  This allows it to edit files that are too large to 
X     fit in a single process' data space.  
X
X        Elvis runs under BSD UNIX, AT&T SysV UNIX, Minix, MS-DOS,  Atari
X     TOS, Coherent,  and OS9/68000.  The next version is expected to add
X     OS/2, VMS, AmigaDos, and  MacOS.    Contact  me  before  you  start
X     porting it to some other OS, because somebody else may have already 
X     done it for you.  
X
X        Elvis  is  freely  redistributable,  in  either  source  form or
X     executable form.  There are no restrictions on how you may use it.  
X
X
X   E1.1  CompilingF
X
X        See the "Versions" section of this manual  for  instructions  on
X     how to compile Elvis.  
X
X        If  you want to port Elvis to another O.S. or compiler, then you
X     should read the "Portability" part of the "Internal" section.  
X
X
X   E1.2  Overview of ElvisF
X
X        The user interface of elvis/vi/ex is weird.  There are two major 
X     command modes in Elvis, and a few text input modes as well.    Each
X     command  mode has a command which allows you to switch to the other
X     mode.  
X
X        You will probably use the 4visual command mode5 most of the  time.
X     This is the mode that elvis normally starts up in.  
X
X        In  visual  command mode, the entire screen is filled with lines
X     of text from your file.  Each keystroke is interpretted as part  of
X     a visual  command.    If  you  start  typing  text,  it will -1not-0 be
X     inserted, it will be treated as part of a command.  To insert text, 
X     you must first give an "insert text" command.  This will take  some
X     getting used to.    (An alternative exists.  Lookup the "inputmode"
X     option.) 
X
X        The 4colon mode5  is  quite  different.    Elvis  displays  a  ":"
X     character on  the  bottom line of the screen, as a prompt.  You are
X     then expected to type in a command line and hit the  <Return>  key.
X     The  set of commands recognized in the colon mode is different from
X     visual mode's.  
X
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/intro.doc` -ne 2383
then
echo doc/intro.doc damaged!
fi
fi

if test -f doc/visual.doc -a "$1" != -f
then
echo Will not overwrite doc/visual.doc
else
echo Extracting doc/visual.doc
sed 's/^X//' >doc/visual.doc <<\eof
X
X     Elvis 1.4              VISUAL MODE COMMANDS                Page 2-1
X
X
XE2.  VISUAL MODE COMMANDSF
X
X        Most visual mode commands are one keystroke long.  The following 
X     table  lists  the  operation  performed by each keystroke, and also
X     denotes any options or arguments that it accepts.  Notes at the end 
X     of the table describe the notation used in this table.  
X
X        In addition to the keys listed  here,  your  keyboard's  "arrow"
X     keys  will  be  interpretted  as  the  appropriate  cursor movement
X     commands.  The same goes for <PgUp> and <PgDn>,  if  your  keyboard
X     has them.    There  is a colon mode command (to be described later)
X     which will allow you to define other keys, such as function keys.  
X
X        A tip: visual command mode looks a lot like text input mode.  If 
X     you forget which mode you're in, just hit the <Esc> key.  If  elvis
X     beeps, then you're in visual command mode.  If elvis does not beep, 
X     then  you  were  in  input mode, but by hitting <Esc> you will have
X     switched to visual command mode.  So, one  way  or  another,  after
X     <Esc> elvis will be ready for a command.  
X
X-1command         description                                             type-0
X        ^A      ---
X        ^B      Move toward the top of the file by 1 screenful
X        ^C      ---
Xcount   ^D      scroll down <count> lines (default 1/2 screen)
Xcount   ^E      scroll up <count> lines
X        ^F      move toward the bottom of the file by 1 screenful
X        ^G      show file status, and the current line #
Xcount   ^H      move left, like h                                       MOVE
X        ^I      ---
Xcount   ^J      move down                                               MOVE
X        ^K      ---
X        ^L      redraw the screen
Xcount   ^M      move to the front of the next line                      MOVE
Xcount   ^N      move down                                               MOVE
X        ^O      ---
Xcount   ^P      move up                                                 MOVE
X        ^Q      ---
X        ^R      redraw the screen
X        ^S      ---
X        ^T      ---
Xcount   ^U      scroll up <count> lines (default 1/2 screen)
X        ^V      ---
X        ^W      ---
X        ^X      ---
Xcount   ^Y      scroll down <count> lines
X        ^Z      ---
X        ESC     ---
X        ^\      ---
X        ^]      if the cursor is on a tag name, go to that tag
X        ^^      switch to the previous file, like ":e #"
X        ^_      ---
Xcount   SPC     move right,like l                                       MOVE
X         ! mv   run the selected lines thru an external filter program
X         " key  select which cut buffer to use next
Xcount    # +    increment a number                                      EDIT
X         $      move to the rear of the current line                    MOVE
X         %      move to the matching (){}[] character                   MOVE
X
X
X
X
X
X     Elvis 1.4              VISUAL MODE COMMANDS                Page 2-2
X
X
Xcount    &      repeat the previous ":s//" command here                 EDIT
X         ' key  move to a marked line                                   MOVE
Xcount    (      move backward <count> sentences                         MOVE
Xcount    )      move forward <count> sentences                          MOVE
X         *      go to the next error in the errlist
Xcount    +      move to the front of the next line                      MOVE
Xcount    ,      repeat the previous [fFtT] but in the other direction   MOVE
Xcount    -      move to the front of the preceding line                 MOVE
Xcount    .      repeat the previous "edit" command
X         / text search forward for a given regular expression           MOVE
X         0      if not part of count, move to 1st char of this line     MOVE
X         1      part of count
X         2      part of count
X         3      part of count
X         4      part of count
X         5      part of count
X         6      part of count
X         7      part of count
X         8      part of count
X         9      part of count
X         : text run single EX cmd
Xcount    ;      repeat the previous [fFtT] cmd                          MOVE
X         < mv   shift text left                                         EDIT
X         =      ---
X         > mv   shift text right                                        EDIT
X         ? text search backward for a given regular expression          MOVE
X         @ key  execute the contents of a cut-buffer as VI commands
Xcount    A inp  append at end of the line                               EDIT
Xcount    B      move back Word                                          MOVE
X         C inp  change text from the cursor through the end of the line EDIT
X         D      delete text from the cursor through the end of the line EDIT
Xcount    E      move end of Word                                        MOVE
Xcount    F key  move leftward to a given character                      MOVE
Xcount    G      move to line #<count> (default is the bottom line)      MOVE
Xcount    H      move to home row (the line at the top of the screen)
Xcount    I inp  insert at the front of the line (after indents)         EDIT
Xcount    J      join lines, to form one big line                        EDIT
X         K      look up keyword
Xcount    L      move to last row (the line at the bottom of the screen)
X         M      move to middle row
X         N      repeat previous search, but in the opposite direction   MOVE
Xcount    O inp  open up a new line above the current line               EDIT
X         P      paste text before the cursor
X         Q      quit to EX mode
X         R inp  overtype                                                EDIT
Xcount    S inp  change lines, like <count>cc
Xcount    T key  move leftward *almost* to a given character             MOVE
X         U      Undo all recent changes to the current line
X         V      ---
Xcount    W      move forward <count> Words                              MOVE
Xcount    X      delete the character(s) to the left of the cursor       EDIT
Xcount    Y      yank text line(s) (copy them into a cut buffer)
X         Z Z    save the file & exit
X         [ [    move back 1 section                                     MOVE
X         \      ---
X         ] ]    move forward 1 section                                  MOVE
X         ^      move to the front of the current line (after indent)    MOVE
X         _      ---
X
X
X
X
X
X     Elvis 1.4              VISUAL MODE COMMANDS                Page 2-3
X
X
X         ` key  move to a marked character                              MOVE
Xcount    a inp  insert text after the cursor                            EDIT
Xcount    b      move back <count> words                                 MOVE
X         c mv   change text                                             EDIT
X         d mv   delete text                                             EDIT
Xcount    e      move forward to the end of the current word             MOVE
Xcount    f key  move rightward to a given character                     MOVE
X         g      ---
Xcount    h      move left                                               MOVE
Xcount    i inp  insert text at the cursor                               EDIT
Xcount    j      move down                                               MOVE
Xcount    k      move up                                                 MOVE
Xcount    l      move right                                              MOVE
X         m key  mark a line or character
X         n      repeat the previous search                              MOVE
Xcount    o inp  open a new line below the current line                  EDIT
X         p      paste text after the cursor
X         q      ---
Xcount    r key  replace <count> chars by a given character              EDIT
Xcount    s inp  replace <count> chars with text from the user           EDIT
Xcount    t key  move rightward *almost* to a given character            MOVE
X         u      undo the previous edit command
X         v      ---
Xcount    w      move forward <count> words                              MOVE
Xcount    x      delete the character that the cursor's on               EDIT
X         y mv   yank text (copy it into a cut buffer)
X         z key  scroll current line to the screen's +=top -=bottom .=middle
Xcount    {      move back <count> paragraphs                            MOVE
Xcount    |      move to column <count> (the leftmost column is 1)
Xcount    }      move forward <count> paragraphs                         MOVE
Xcount    ~      switch a character between uppercase & lowercase        EDIT
X        DEL     ---
X--------------------------------------------------------------------------------
X
Xcount   Many commands may be preceded by a count.  This is a sequence of digits
X        representing a decimal number.  For most commands that use a count,
X        the command is repeated <count> times.  The count is always optional,
X        and usually defaults to 1.
X
Xkey     Some commands require two keystrokes.  The first key always determines
X        which command is to be executed.  The second key is used as a parameter
X        to the command.
X
Xmv      Six commands (! < > c d y) operate on text between the cursor and some
X        other position.  To specify that other position, you are expected to
X        follow the command keystroke with a movement command.  Also, you may
X        have the command operate on the whole line that the cursor is on by
X        typing the command key a second time.
X
Xinp     Many commands allow the user to interactively enter text.
X
XEDIT    These commands affect text, and may be repeated by the "." command.
X
XMOVE    These commands move the cursor, and may be used to specify the extent
X        of a member of the "mv" class of commands.
X
X
X
X
X
X
X
X
X     Elvis 1.4              VISUAL MODE COMMANDS                Page 2-4
X
X
X   E2.1  Input ModeF
X
X        You  can't type text into your file directly from visual command
X     mode.  Instead, you must first give a command which  will  put  you
X     into input mode.  The commands to do this are A/C/I/O/R/S/a/i/o/s.  
X
X        The  S/s/C/c  commands  temporarily  place a $ at the end of the
X     text that they are going to change.  
X
X        In input mode, all keystrokes are inserted into the text at  the
X     cursor's position, except for the following: 
X
X                ^A      insert a copy of the last input text
X                ^D      delete one indent character
X                ^H      (backspace) erase the character before the cursor
X                ^L      redraw the screen
X                ^M      (carriage return) insert a newline (^J, linefeed)
X                ^P      insert the contents of the cut buffer
X                ^R      redraw the screen, like ^L
X                ^T      insert an indent character
X                ^U      backspace to the beginning of the line
X                ^V      insert the following keystroke, even if special
X                ^W      backspace to the beginning of the current word
X                ^Z^Z    write the file & exit elvis
X                ^[      (ESCape) exit from input mode, back to command mode
X
X        Also,  on  some  systems,  ^S  may  stop  output, ^Q may restart
X     output, and ^C may interupt execution.    ^@  (the  NUL  character)
X     cannot be inserted.  
X
X        The  R  visual  command  puts  you  in overtype mode, which is a
X     slightly different form of input mode.  In overtype mode, each time 
X     you insert a character, one of the old characters is  deleted  from
X     the file.  
X
X
X   E2.2  Arrow keys in Input ModeF
X
X        The  arrow  keys  can  be used to move the cursor in input mode.
X     (This is an extension; the real Vi doesn't support  arrow  keys  in
X     input  mode.)  The  <PgUp>,  <PgDn>, <Home>, and <End> keys work in
X     input mode, too.  The <Delete> key deletes a  single  character  in
X     input mode.  
X
X        The  best  thing about allowing arrow keys to work in input mode
X     is that as long as you're in input mode,  Elvis  seems  to  have  a
X     fairly ordinary  user interface.  With most other text editors, you
X     are always in either insert mode or replace mode, and you  can  use
X     the arrow  keys at any time to move the cursor.  Now, Elvis can act
X     like that, too.  In fact, with the new "inputmode" option  and  the
X     "control-Z  control-Z" input command, you may never have to go into
X     visual command mode for simple edit sessions.  
X
X
X
X
X
X
X
X
X
X
X
X     Elvis 1.4              VISUAL MODE COMMANDS                Page 2-5
X
X
X   E2.3  DigraphsF
X
X        Elvis supports digraphs as a way to enter non-ASCII  characters.
X     A   digraph   is  a  character  which  is  composed  of  two  other
X     characters.  For example, an apostrophe and the letter i  could  be
X     defined  as  a  digraph  which  is  to  be stored & displayed as an
X     accented i.  
X
X        There is no single standard for extended ASCII  character  sets.
X     Elvis  can  be compiled to fill the digraph with values appropriate
X     for either the IBM PC character set, or the LATIN-1  character  set
X     used by  X windows, or neither.  (See the discussions of -DCS_IBMPC
X     and -DCS_LATIN1 in the CFLAGS section of this manual.) You can view 
X     or edit the digraph table via the ":digraph" colon command.  
X
X        Digraphs wil  not  be  recognized  until  you've  entered  ":set
X     digraph".  
X
X        To  actually  use  a  digraph type the first character, then hit
X     <Backspace>, and then type the second character.  Elvis  will  then
X     substitute the non-ASCII character in their place.  
X
X
X   E2.4  AbbreviationsF
X
X        Elvis can   expand   abbreviations  for  you.    You  define  an
X     abbreviation with the :abbr command, and then whenever you type  in
X     the  abbreviated  form  while in input mode, elvis will immediately
X     the long form.  COBOL programmers should find this useful.  :-) 
X
X        Elvis  doesn't  perform  the  substitution  until  you  type   a
X     non-alphanumeric character  to  mark  the  end of the word.  If you
X     type a control-V before that non-alphanumeric character, then Elvis 
X     will not perform the substitution.  
X
X
X   E2.5  Auto-IndentF
X
X        With  the  ":set  autoindent"  option  turned  on,  Elvis   will
X     automatically  insert  leading  whitespace at the beginning of each
X     new line that you type in.  The leading whitespace is  copied  from
X     the preceding line.  
X
X        To add  more leading whitespace, type control-T.  To remove some
X     whitespace, type control-D.  
X
X        Elvis' autoindent mode isn't 100%  compatible  with  vi's.    In
X     Elvis, 0^D and ^^D don't work, ^U can wipeout all indentation,  and 
X     sometimes  Elvis will use a different amount of indentation than vi
X     would.  
X
X
X
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/visual.doc` -ne 14869
then
echo doc/visual.doc damaged!
fi
fi

if test -f doc/ex.doc -a "$1" != -f
then
echo Will not overwrite doc/ex.doc
else
echo Extracting doc/ex.doc
sed 's/^X//' >doc/ex.doc <<\eof
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-1
X
X
XE3.  COLON MODE COMMANDSF
X
X        -1lines           command         arguments                    -0
X        [line]          -1a-0ppend
X                        -1ar-0gs            [files]
X                        -1cc-0              [files]
X                        -1cd-0              [directory]
X        [line][,line]   -1c-0hange
X                        -1chd-0ir           [directory]
X        [line][,line]   -1co-0py            line
X        [line][,line]   -1d-0elete          ["x]
X                        -1di-0graph[!]      [XX [Y]]
X                        -1e-0dit[!]         [file]
X                        -1er-0rlist[!]      [errlist]
X                        -1e-0x[!]           [file]
X                        -1f-0ile            [file]
X        [line][,line]   -1g-0lobal          /regexp/ command
X        [line]          -1i-0nsert
X        [line][,line]   -1j-0oin
X        [line][,line]   -1l-0ist
X                        -1mak-0e            [target]
X                        -1ma-0p[!]          key mapped_to
X        [line]          mar-1k-0            x
X                        -1mk-0exrc
X        [line][,line]   -1m-0ove            line
X                        -1n-0ext[!]         [files]
X                        -1N-0ext[!]
X        [line][,line]   -1nu-0mber
X                        -1pre-0vious[!]
X        [line][,line]   -1p-0rint
X        [line]          -1pu-0t             ["x]
X                        -1q-0uit[!]
X        [line]          -1r-0ead            file
X                        -1rew-0ind[!]
X                        -1se-0t             [options]
X                        -1so-0urce          file
X        [line][,line]   -1s-0ubstitute      /regexp/replacement/[p][g][c]
X                        -1ta-0g[!]          tagname
X        [line][,line]   -1t-0o              line
X                        -1u-0ndo
X                        -1unm-0ap[!]        key
X                        -1ve-0rsion
X        [line][,line]   -1v-0global         /regexp/ command
X                        -1vi-0sual
X                        -1wq-0
X        [line][,line]   -1w-0rite[!]        [[>>]file]
X                        -1x-0it[!]
X        [line][,line]   -1y-0ank            ["x]
X        [line][,line]   -1!-0               command
X        [line][,line]   -1<-0
X        [line][,line]   -1=-0
X        [line][,line]   -1>-0
X        [line][,line]   -1&-0
X                        -1 at -0               "x
X
X
X
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-2
X
X
X        To  use colon mode commands, you must switch from visual command
X     mode to colon command mode.  The visual mode commands  to  do  this
X     are  ":"  for  a  single  colon command, or "Q" for many colon mode
X     commands.  
X
X
X   E3.1  Line SpecifiersF
X
X        Line specifiers are always optional.  The first  line  specifier
X     of most  commands usually defaults to the current line.  The second
X     line specifier usually defaults to be the same as  the  first  line
X     specifier.  Exceptions are :write, :global, and :vglobal, which act 
X     on all lines of the file by default, and :!, which acts on no lines 
X     by default.  
X
X        Line  specifiers  consist  of  an  absolute  part and a relative
X     part.  The absolute part of a  line  specifier  may  be  either  an
X     explicit  line  number, a mark, a dot to denote the current line, a
X     dollar sign to denote the last line of the file, or  a  forward  or
X     backward search.  
X
X        An explicit line number is simply a decimal number, expressed as 
X     a string of digits.  
X
X        A mark is typed in as an apostrophe followed by a letter.  Marks 
X     must be  set before they can be used.  You can set a mark in visual
X     command mode by typing "m" and a letter, or you can set it in colon 
X     command mode via the "mark" command.  
X
X        A forward search is typed in as a regular expression  surrounded
X     by slash  characters;  searching  begins  at  the  default line.  A
X     backward search is typed in as a regular expression  surrounded  by
X     question  marks;  searching  begins  at the line before the default
X     line.  
X
X        If you omit the absolute part, then the default line is used.  
X
X        The relative part of a line specifier is typed as a "+"  or  "-"
X     character followed  by a decimal number.  The number is added to or
X     subtracted from the absolute part of the line specifier to  produce
X     the final line number.  
X
X        As  a  special  case, the % character may be used to specify all
X     lines of the file.  It is roughly equivelent to saying 1,$.    This
X     can be a handy shortcut.  
X
X        Some examples: 
X
X            :p              print the current line
X            :37p            print line 37
X            :'gp            print the line which contains mark g
X            :/foo/p         print the next line that contains "foo"
X            :$p             print the last line of the file
X            :20,30p         print lines 20 through 30
X            :1,$p           print all lines of the file
X            :%p             print all lines of the file
X            :/foo/-2,+4p    print 5 lines around the next "foo"
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-3
X
X
X   E3.2  Text Entry CommandsF
X
X            [line] append
X            [line][,line] change ["x]
X            [line] insert
X
X        The -1a-0ppend command inserts text after the specified line.  
X
X        The -1i-0nsert command inserts text before the specified line.  
X
X        The  -1c-0hange command copies the range of lines into a cut buffer,
X     deletes them, and inserts new text where the old text used to be.  
X
X        For all of these commands, you indicate  the  end  of  the  text
X     you're inserting by hitting ^D or by entering a line which contains 
X     only a period.  
X
X
X   E3.3  Cut & Paste CommandsF
X
X            [line][,line] delete ["x]
X            [line][,line] yank ["x]
X            [line] put ["x]
X            [line][,line] copy line
X            [line][,line] to line
X            [line][,line] move line
X
X        The  -1d-0elete  command  copies the specified range of lines into a
X     cut buffer, and then deletes them.  
X
X        The -1y-0ank command copies the specified range of lines into a  cut
X     buffer, but does *not* delete them.  
X
X        The  -1pu-0t  command  inserts  text  from  a  cut  buffer after the
X     specified line.  
X
X        The -1co-0py and -1t-0o commands yank the specified range of  lines  and
X     then immediately paste them after some other line.  
X
X        The  -1m-0ove  command deletes the specified range of lines and then
X     immediately pastes them after some other line.  If the  destination
X     line  comes  after  the  deleted  text,  then  it  will be adjusted
X     automatically to account for the deleted lines.  
X
X
X   E3.4  Display Text CommandsF
X
X            [line][,line] print
X            [line][,line] list
X            [line][,line] number
X
X        The -1p-0rint command displays the specified range of lines.  
X
X        The -1nu-0mber command displays the lines, with line numbers.  
X
X
X
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-4
X
X
X        The -1l-0ist command also displays them, but it is careful  to  make
X     control characters visible.  
X
X
X   E3.5  Global Operations CommandsF
X
X            [line][,line] global /regexp/ command
X            [line][,line] vglobal /regexp/ command
X
X        The  -1g-0lobal  command searches through the lines of the specified
X     range (or through the whole file if  no  range  is  specified)  for
X     lines that  contain  a given regular expression.  It then moves the
X     cursor to each of these lines and runs some other command on them.  
X
X        The -1v-0global command is similar, but it searches for  lines  that
X     -1don't-0 contain the regular expression.  
X
X
X   E3.6  Line Editing CommandsF
X
X            [line][,line] join
X            [line][,line] ! program
X            [line][,line] <
X            [line][,line] >
X            [line][,line] substitute /regexp/replacement/[p][g][c]
X            [line][,line] &
X
X        The  -1j-0oin  command  catenates  all  lines in the specified range
X     together to form one big line.  If only a single line is specified, 
X     then the following line is catenated onto it.  
X
X        The -1!-0 command runs an external filter  program,  and  feeds  the
X     specified range  of  lines  to  it's  stdin.    The  lines are then
X     replaced by the output of the filter.  A typical example  would  be
X     ":'a,'z!sort" to sort the lines 'a,'z.  
X
X        The  -1<-0 and -1>-0 commands shift the specified range of lines left or
X     right, normally by the width of 1 tab character.  The  "shiftwidth"
X     option determines the shifting amount.  
X
X        The  -1s-0ubstitute  command  finds  the  regular expression in each
X     line, and replaces it with the replacement text.   The  "p"  option
X     causes the altered lines to be printed.  The "g" option permits all 
X     instances  of  the  regular  expression  to  be  found  & replaced.
X     (Without "g", only the first occurrence in each line is  replaced.)
X     The "c" option asks for confirmation before each substitution.  
X
X        The   -1&-0  command  repeats  the  previous  substitution  command.
X     Actually, "&" is equivelent to "s//~/" with  the  same  options  as
X     last time.    It  searches for the last regular expression that you
X     specified for any purpose, and replaces it with the the  same  text
X     that was used in the previous substitution.  
X
X
X
X
X
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-5
X
X
X   E3.7  Undo CommandF
X
X            undo
X
X        The -1u-0ndo command restores the file to the state it was in before 
X     your most recent command which changed text.  
X
X
X   E3.8  Configuration & Status CommandsF
X
X            map[!] [key mapped_to]
X            unmap[!] key
X            abbr [word expanded_form_of_word]
X            unabbr word
X            digraph[!] [XX [Y]]
X            set [options]
X            mkexrc
X            [line] mark "x
X            visual
X            version
X            [line][,line] =
X            file [file]
X            source file
X            @ "x
X
X        The  -1ma-0p command allows you to configure Elvis to recognize your
X     function keys, and treat them as though they transmitted some other 
X     sequence of characters.  Normally this mapping is done only when in 
X     the visual command mode, but with the [!] present it will map  keys
X     under all  contexts.  When this command is given with no arguments,
X     it prints a table showing all mappings currently in effect.    When
X     called  with  two  arguments,  the  first is the sequence that your
X     function key really sends, and the second is the sequence that  you
X     want Elvis to treat it as having sent.  
X
X        The -1unm-0ap command removes key definitions that were made via the 
X     map command.  
X
X        The   -1ab-0br   command   is   used   to  define/list  a  table  of
X     abbreviations.  The table contains both the  abbreviated  form  and
X     the fully  spelled-out form.  When you're in visual input mode, and
X     you  type  in  the  abbreviated  form,  Elvis  will   replace   the
X     abbreviated form  with  the  fully  spelled-out  form.    When this
X     command is called without arguments, it lists the table;  with  two
X     or  more  arguments, the first argument is taken as the abbreviated
X     form, and the rest of the command line  is  the  fully-spelled  out
X     form.  
X
X        The -1una-0bbr command deletes entries from the abbr table.  
X
X        The  -1di-0graph  command  allows you to display the set of digraphs
X     that Elvis is using, or add/remove a digraph.  To list the  set  of
X     digraphs, use  the  digraph  command  with  no arguments.  To add a
X     digraph, you should give the digraph command two  arguments.    The
X     first argument is the two ASCII characters that are to be combined; 
X     the second  is  the  non-ASCII  character that they represent.  The
X     non-ASCII character's most significant bit is automatically set  by
X     the digraph  command,  unless  to  append a !  to the command name.
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-6
X
X
X     Removal of a digraph is similar to adding a  digraph,  except  that
X     you should leave off the second argument.  
X
X        The -1se-0t command allows you examine or set various options.  With 
X     no  arguments,  it  displays  the  values of options that have been
X     changed.  With the single argument "all" it displays the values  of
X     all  options,  regardless of whether they've been explicitly set or
X     not.  Otherwise, the arguments are treated as options to be set.  
X
X        The -1mk-0exrc command saves the current  configuration  to  a  file
X     called ".exrc" in the current directory.  
X
X        The  mar-1k-0  command  defines  a named mark to refer to a specific
X     place in the file.  This mark may be used later  to  specify  lines
X     for other commands.  
X
X        The -1vi-0sual command puts the editor into visual mode.  Instead of 
X     emulating ex, Elvis will start emulating vi.  
X
X        The  -1ve-0rsion  command  tells you that what version of Elvis this
X     is.  
X
X        The -1=-0 command tells you what line  you  specified,  or,  if  you
X     specified a range of lines, it will tell you both endpoints and the 
X     number of lines included in the range.  
X
X        The  -1f-0ile command tells you the name of the file, whether it has
X     been modified, the number of lines in the  file,  and  the  current
X     line number.  You can also use it to change the name of the current 
X     file.  
X
X        The  -1so-0urce command reads a sequence of colon mode commands from
X     a file, and interprets them.  
X
X        The -1 at -0 command executes  the  contents  of  a  cut-buffer  as  EX
X     commands.  
X
X
X   E3.9  Multiple File CommandsF
X
X            args [files]
X            next[!] [files]
X            Next[!]
X            previous[!]
X            rewind[!]
X
X        When  you  invoke  Elvis  from  your  shell's  command line, any
X     filenames that you give to Elvis as arguments  are  stored  in  the
X     args list.    The  -1ar-0gs command will display this list, or define a
X     new one.  
X
X        The -1n-0ext command switches from the current file to the next  one
X     in the args list.  You may specify a new args list here, too.  
X
X        The  -1N-0ext  and -1pre-0vious commands (they're really aliases for the
X     same command) switch from the current file to the preceding file in 
X     the args list.  
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-7
X
X
X        The -1rew-0ind command switches from the current file to  the  first
X     file in the args list.  
X
X
X   E3.10  Switching FilesF
X
X            edit[!] [file]
X            tag[!] tagname
X
X        The  -1e-0dit command allows to switch from the current file to some
X     other file.  This has nothing to do with  the  args  list,  by  the
X     way.  
X
X        The  -1ta-0g  command  looks  up  a  given  tagname in a file called
X     "tags".  This tells it which file the tag is in, and how to find it 
X     in that file.  Elvis then switches to the tag's file and finds  the
X     tag.  
X
X
X   E3.11  Working with a CompilerF
X
X            cc [files]
X            make [target]
X            errlist[!] [errlist]
X
X        The -1cc-0 and -1mak-0e commands execute your compiler or "make" utility 
X     and redirect  any  error messages into a file called "errlist".  By
X     default, cc is run on the current  file.    (You  should  write  it
X     before  running  cc.)  The  contents of the "errlist" file are then
X     scanned for error messages.  If an error message is found, then the 
X     cursor is moved to the line where the error was detected,  and  the
X     description of the error is displayed on the status line.  
X
X        After  you've fixed one error, the -1er-0rlist command will move the
X     cursor to the next error.  In visual command mode, hitting `*' will 
X     do this, too.  
X
X        You can also create an "errlist" file from outside of Elvis, and 
X     use "elvis -m" to start elvis and have  the  cursor  moved  to  the
X     first error.    Note  that you don't need to supply a filename with
X     "elvis -m" because the error messages always say which source  file
X     an error is in.  
X
X        Note: When you use errlist repeatedly to fix several errors in a 
X     single file, it will attempt to adjust the reported line numbers to 
X     allow for   lines  that  you  have  inserted  or  deleted.    These
X     adjustments are made with the assumption that you will work  though
X     the file from the beginning to the end.  
X
X
X   E3.12  Exit CommandsF
X
X            quit[!]
X            wq
X            xit
X
X
X
X
X
X
X
X
X     Elvis 1.4               COLON MODE COMMANDS                Page 3-8
X
X
X        The  -1q-0uit  command  exits  from  the  editor without saving your
X     file.  
X
X        The -1wq-0 command writes your file out, then then exits.  
X
X        The -1x-0it command is similar to the -1wq-0 command,  except  that  -1x-0it
X     won't bother to write your file if you haven't modified it.  
X
X
X   E3.13  File I/O CommandsF
X
X            [line] read file
X            [line][,line] write[!] [[>>]file]
X
X        The  -1r-0ead  command  gets  text  from another file and inserts it
X     after the specified line.   It  can  also  read  the  output  of  a
X     program;  simply  precede  the  program name by a '!' and use it in
X     place of the file name.  
X
X        The -1w-0rite command writes the whole file, or just part of it,  to
X     some other  file.    The !, if present, will permit the lines to be
X     written even if you've set the readonly option.  If you precede the 
X     filename by >> then the lines will be appended to the file.  
X
X
X   E3.14  Directory CommandsF
X
X            cd [directory]
X            chdir [directory]
X            shell
X
X        The -1cd-0 and -1chd-0ir commands (really two  names  for  one  command)
X     switch the current working directory.  
X
X        The -1sh-0ell command starts an interactive shell.  
X
X
X   E3.15  Debugging CommandsF
X
X            [line][,line] debug[!]
X            validate[!]
X
X        These  commands are only available if you compile Elvis with the
X     -DDEBUG flag.  
X
X        The de-1b-0ug command lists statistics for the blocks which  contain
X     the specified range  of  lines.    If  the  !  is present, then the
X     contents of those blocks is displayed, too.  
X
X        The -1va-0lidate  command  checks  certain  variables  for  internal
X     consistency.  Normally it doesn't output anything unless it detects 
X     a problem.    With  the  !,  though,  it will always produce *some*
X     output.  
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/ex.doc` -ne 19254
then
echo doc/ex.doc damaged!
fi
fi

if test -f doc/versions.doc -a "$1" != -f
then
echo Will not overwrite doc/versions.doc
else
echo Extracting doc/versions.doc
sed 's/^X//' >doc/versions.doc <<\eof
X
X     Elvis 1.4                    VERSIONS                     Page 12-1
X
X
XE12.  VERSIONSF
X
X        Elvis  currently  works  under BSD UNIX, AT&T System-V UNIX, SCO
X     XENIX, Minix, Coherent, MS-DOS,  Atari  TOS,  and  OS9/68k.    This
X     section  of the manual provides special information that applies to
X     each particular version of Elvis.  
X
X        For all versions except MS-DOS, the file  "Makefile.mix"  should
X     be  copied to "Makefile", and then edited to select the correct set
X     of options for your system.  There is more information  about  this
X     embedded in the file itself.  
X
X
X   E12.1  BSD UNIXF
X
X        Temporary files are stored in /tmp.  
X
X        Elvis doesn't  have  an  "expreserve" program yet.  Instead, you
X     should modify /etc/rc so that the temp files are not  deleted  when
X     the system is rebooted.  Find a line in /etc/rc which reads 
X
X            rm -rf /tmp/*
X
X        or something like that, and change it to read 
X
X            rm -rf /tmp/[^e]* /tmp/e[^l]* /tmp/el[^v]* /tmp/elv_*
X
X        If  you  do  not  have permission to modify /etc/rc, don't fret.
X     The above modification is only needed to allow you to recover  your
X     changes after a system crash.  You can still run Elvis without that 
X     modification,  and  you  can  still recover your changes when Elvis
X     crashes or when your dialup modem looses  the  carrier  signal,  or
X     something like  that.   A system crash is the only thing that could
X     hurt you.  
X
X        Both Elvis and the real Vi read initialization commands  from  a
X     file  called  ".exrc",  but the commands in that file might work on
X     one but not the other.  For example, "set keywordprg=man" will work 
X     for  Elvis,  but  Vi  will  complain  because  it  doesn't  have  a
X     "keywordprg" option.    If the warning messages annoy you, then you
X     can edit the config.h file to change the name of the initialization 
X     file ".exrc" to something else, such as ".elvisrc".  
X
X        If you use X windows, you  may  wish  to  add  "-DCS_LATIN1"  to
X     CFLAGS.   This will cause the digraph table and the flipcase option
X     to have  default  values  that  are  appropriate  for  the  LATIN-1
X     character set.  That's the standard character set for X.  
X
X
X   E12.2  System-V UNIXF
X
X        If  your  system uses terminfo instead of termcap, then you will
X     have to edit the LIBS setting in the Makefile.  Currently  it  says
X     "LIBS=-ltermcap",    but   you   may   have   to   change   it   to
X     "LIBS=-lterminfo" or "LIBS=-lterm" or something like that.  
X
X
X
X
X
X
X
X
X     Elvis 1.4                    VERSIONS                     Page 12-2
X
X
X        The /etc/rc  file  should  be  modified  as  described  for  BSD
X     systems, above.  The potential trouble with ".exrc" described above 
X     for BSD UNIX applies to System-V UNIX as well.  
X
X        Elvis uses control-C as the interrupt key, not Delete.  
X
X
X   E12.3  SCO XenixF
X
X        For Xenix-386,  you  can use the generic System-V settings.  You
X     may wish to add "-DCS_IBMPC" to CFLAGS, to have the  digraph  table
X     and  flipcase option start up in a mode that is appropriate for the
X     console.  
X     There is a separate group of settings for use with Xenix-286.    It
X     already has "-DCS_IBMPC" in CFLAGS.  
X
X        Because  Xenix  is  so  similar  to  System-V, everything I said
X     earlier about System-V applies to the Xenix version too.  
X
X
X   E12.4  MinixF
X
X        There are separate settings in  Makefile.mix  for  Minix-PC  and
X     Minix-ST.   The  differences  between  these  two  are  that the ST
X     version uses ".o" for  the  object  file  extension  where  the  PC
X     version  uses  ".s",  and  the  PC  version has some extra flags in
X     CFLAGS to reduce the size of Elvis.    The  PC  version  also  uses
X     tinytcap (instead of the full termcap) to make it smaller.  
X
X        Minix-PC  users  should  read  the CFLAGS section of this manual
X     very carefully.  You have some choices to make...  
X
X        The temporary files  are  stored  in  /usr/tmp.    The  /usr/tmp
X     directory  must  exist  before  you  run  Elvis,  and  it  must  be
X     readable/writable by everybody.  We use /usr/tmp  instead  of  /tmp
X     because  after a system crash or power failure, you can recover the
X     altered version of a file from the temporary file in /usr/tmp.   If
X     it  was  stored in /tmp, though, then it would be lost because /tmp
X     is probably located on the RAM disk.  
X
X        Elvis uses control-C as the interrupt key, not Delete.  
X
X
X   E12.5  CoherentF
X
X        Elvis was ported to Coherent by Esa Ahola.  
X
X        Elvis is too large to run under Coherent  unless  you  eliminate
X     some features via the CFLAGS setting.  The recommended settings, in 
X     Makefile.mix,  produce a working version of elvis which emulates Vi
X     faithfully, but lacks most of the extensions.  You should read  the
X     CFLAGS section of this manual carefully.  
X
X        You  can  probably  reduce the size of Elvis by using tinytcap.c
X     instead of -lterm.  This would allow you to keep most  features  of
X     Elvis, at  the  expense  of terminal independence.  (Tinytcap.c has
X     ANSI escape sequences hard-coded into it.) To  use  tinytcap,  just
X     add  "tinytcap.o"  to the "EXTRA=" line in the Makefile, and remove
X
X
X
X
X
X     Elvis 1.4                    VERSIONS                     Page 12-3
X
X
X     "-lterm" from the "LIBS=" line.  
X
X        The temporary files are stored in /tmp.  You should modify  your
X     /etc/rc file as described for BSD earlier.  
X
X
X   E12.6  MS-DOSF
X
X        Elvis  was  ported to MS-DOS by Guntram Blohm and Martin Patzel.
X     Dave  Lord  also  deserves  a  big  "thank  you"  for  exploring  a
X     compatibility glitch between DOS 4.01 and Elvis.  
X
X        Ideally,  Elvis  should be compiled with Microsoft C 5.1 and the
X     standard Microsoft Make utility, via the command "make  elvis.mak".
X     This will compile Elvis and all related utilities.  
X
X        If  you  have  Turbo-C,  then you can 4almost5 use the "Elvis.prj"
X     file to compile Elvis.    EYou  must  explicitly  force  Turbo-C  to
X     compile  it  with  the "medium" memoryF Emodel, and you must increase
X     the stack size to 16k.F Most of the related  programs  (ctags,  ref,
X     virec, refont, and wildcard) are  only one file long, so you should 
X     have no  trouble compiling them.  The "alias.c" file is meant to be
X     compiled once into an executable named "ex.exe".  You  should  then
X     copy "ex.exe" to "vi.exe", and "view.exe".  
X
X        Elvis stores  its  temporary  files  in  C:\tmp.  If this is not
X     satisfactory, then you should edit the CFLAGS line of your Makefile 
X     to change TMPDIR to something else before compiling.  You can  also
X     control  the name of the temp directory via an environment variable
X     named TMP or TEMP.  The directory must exist  before  you  can  run
X     Elvis.  
X
X        Normally,  the  TERM  environment variable should not be set, or
X     else it should be set to "pcbios".  This way, Elvis will make calls 
X     to BIOS to update the screen.  (If you don't like the  colors  that
X     the BIOS  interface  uses,  then  edit the attr[] table in pc.c.  A
X     ":color" command will be added eventually.) 
X
X        You may prefer to use  a  device  driver  such  as  ANSI.SYS  or
X     NNANSI.SYS,  for  speed; or you may NEED to use a device driver for
X     compatibility.  If so, you should install one of these  drivers  by
X     adding  "driver  = ansi.sys" (or whatever) to your CONFIG.SYS file,
X     and then you should define TERM to be either "ansi" or  "nansi"  by
X     adding  a  line  such as "set TERM=ansi" to your AUTOEXEC.BAT file.
X     You must then reboot for these changes to take effect.  After that, 
X     Elvis will notice the "TERM" setting and use the driver.  
X
X        Under MS-DOS, Elvis has an extra ":set" option  called  "pcbios"
X     which indicates whether the BIOS is being used directly.  This is a 
X     "read only" option; you can't use it to switch your interface style 
X     in the middle of an edit session.  
X
X        An extra  program,  called "wildcard", is needed for MS-DOS.  It
X     expands wildcard characters in file names.  
X
X
X
X
X
X
X
X
X
X     Elvis 1.4                    VERSIONS                     Page 12-4
X
X
X   E12.7  Atari TOSF
X
X        Elvis was ported to  Atari  TOS  by  Guntram  Blohm  and  Martin
X     Patzel.  It  is  very  similar  to the MS-DOS version.  It has only
X     been tested with the Mark Williams C compiler.  
X
X        The TERM environment variable is ignored;  the  ST  port  always
X     assumes that  TERM=vt52.   The SHELL (not COMSPEC!) variable should
X     be set to the name of a line-oriented shell.  
X
X        A simple shell in  included  with  elvis.    Its  source  is  in
X     "shell.c", and the name of the executable is "shell.ttp".  This was 
X     necessary because the standard Atari software doesn't offer any way 
X     to set environment variables.  The file "profile.sh" should contain 
X     a  set  of  instructions to be executed when the shell first starts
X     up.  An example of this file  is  included,  but  you  will  almost
X     certainly want to edit it right away to match your configuration.  
X
X        If  you  already have a command-line shell, then you'll probably
X     want to continue using it.  The shell that comes with Elvis is very 
X     limited.  
X
X        Currently, character  attributes  cannot  be  displayed  on  the
X     screen.   In  other  words, the "charattr" option doesn't work very
X     well.  Its ironic -- the only system that always  has  a  bitmapped
X     display is the only system that doesn't support multiple fonts!  
X
X
X   E12.8  OS9/68kF
X
X        Elvis was ported to OS9/68k by Peter Reinig.  
X
X        The  Makefile  is  currently configured to install elvis and the
X     related programs in /dd/usr/cmds If this this is unacceptable, then 
X     you  should  change  the  BIN  setting  to  some  other  directory.
X     Similarly,    it   expects   the   source   code   to   reside   in
X     /dd/usr/src/elvis; the ODIR setting is used to control this.  
X
X        Temporary files are stored  in  the  /dd/tmp  directory.    Your
X     /dd/startup  file  may  need  to  be  modified  to  prevent it from
X     deleting Elvis' temporary files.  
X
X        The program in alias.c is linked repeatedly to produce the "vi", 
X     "view", and "input" aliases for elvis.  Sadly, the  "ex"  alias  is
X     impossible to implement under OS9, because the shell has a built-in 
X     command by that name.  
X
X        For  some  purposes,  you  must  give  `make'  the  "-b" option.
X     Specifically, you need this  for  "make  -b  clean"  and  "make  -b
X     install".  
X
X
X
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/versions.doc` -ne 10854
then
echo doc/versions.doc damaged!
fi
fi

if test -f doc/cflags.doc -a "$1" != -f
then
echo Will not overwrite doc/cflags.doc
else
echo Extracting doc/cflags.doc
sed 's/^X//' >doc/cflags.doc <<\eof
X
X     Elvis 1.4                     CFLAGS                       Page 9-1
X
X
XE9.  CFLAGSF
X
X        Elvis  uses  many  preprocessor  symbols to control compilation.
X     Some of  these  control  the  sizes  of  buffers  and  such.    The
X     "-DNO_XXXX" options remove small sets of related features.  
X
X        Most  Elvis  users  will  probably  want  to  keep  all features
X     available.  Minix-PC users, though, will  have  to  sacrifice  some
X     sets because  otherwise  Elvis  would be too bulky to compile.  The
X     "asld" phase of the compiler craps out.  
X
X     -DM_SYSV, -DTOS, -DCOHERENT 
X            These flags tell the compiler that Elvis is  being  compiled
X            for  System-V  UNIX,  Atari  TOS, or Coherent, respectively.
X            For other systems, the config.h file can generally figure it 
X            out automatically.  
X
X     -DDATE=4string5 
X            DATE should be defined to be  a  string  constant.    It  is
X            printed  by  the :version command as the compilation date of
X            the program.  
X
X            It is only used in cmd1.c, and even there you may  leave  it
X            undefined without causing an urp.  
X
X     -DNBUFS=4number5 
X            Elvis  keeps  most  of your text in a temporary file; only a
X            small amount is actually stored in RAM.   This  flag  allows
X            you  to  control  how  much of the file can be in RAM at any
X            time.  The default is 5 blocks.  (See  the  -DBLKSIZE  flag,
X            below.) 
X
X            More  RAM  allows  global changes to happen a little faster.
X            If you're just making many small changes in one section of a 
X            file, though, extra RAM won't help much.  
X
X     -DBLKSIZE=4number5 
X            This  controls  the  size  of   blocks   that   Elvis   uses
X            internally.   The  value  of BLKSIZE must be a power of two.
X            The default value is 1024, which allows you to edit files up 
X            to almost 512K bytes long.  Every time you  double  BLKSIZE,
X            you quadruple the size of a text file that Elvis can handle, 
X            but you also cause the temporary file to grow faster.  
X
X     -DTMPDIR=4string5 
X            This sets the default value of the "directory" option, which 
X            specifies where  the  temporary  files  should  reside.  The
X            value of TMPDIR must be a string,  so  be  sure  your  value
X            includes the quote characters on each end.  
X
X     -DEXRC=4str5, -DHMEXRC=4str5, -DSYSEXRC=4str5, -DEXINIT=4str5 
X            This  lets  you  control  the  names  of  the initialization
X            files.  Their values must be strings, so  be  careful  about
X            quoting.  
X
X
X
X
X
X
X
X
X
X     Elvis 1.4                     CFLAGS                       Page 9-2
X
X
X            EXRC  is  the name of the initialization file in the current
X            directory.  Its default value is ".exrc" on UNIX systems  --
X            the same  as  the  real  vi.    For other systems, check the
X            config.h file.  
X
X            HMEXRC is the name of the initialization file in  your  home
X            directory.  By  default, it is the same as EXRC.  Elvis will
X            automatically prepend the name of  your  home  directory  to
X            HMEXRC at run time, so don't give a full path name.  
X
X            SYSEXRC  is  the  name of a system-wide initialization file.
X            It has no default value; if you don't define a value for it, 
X            then the code that supports  SYSEXRC  just  isn't  compiled.
X            The value of SYSEXRC should be a full pathname, in quotes.  
X
X            EXINIT  is  the  name  of  an  environment variable that can
X            contain initialization commands.   Normally,  its  value  is
X            "EXINIT".  
X
X     -DKEYWORDPRG=4string5 
X            This  flag  determines the default value of the "keywordprg"
X            option.  Its value must be a string,  so  be  careful  about
X            quoting.   The default value of this flag is "ref", which is
X            a C reference program.  
X
X     -DCC_COMMAND=4string5 -DMAKE_COMMAND=4string5 -DERRLIST=4string5 
X            These control the  names  of  the  C  compiler,  the  "make"
X            utility, and  the error output file, respectively.  They are
X            only used if -DNO_ERRLIST is not given.  
X
X     -DMAXMAPS=4number5 
X            This controls the capacity of the key map table.  
X
X     -DMAXRCLEN=4number5 
X            This determines how large a .exrc file can be  (measured  in
X            bytes).  The  default  is  1000 bytes.  If you increase this
X            value significantly, then you may  need  to  allocate  extra
X            memory for  the  stack.    See  the  "CHMEM"  setting in the
X            Makefile.  
X
X     -DSHELL=4string5 
X            This is the default value of the "shell" option,  and  hence
X            the default  shell  used  from  within  Elvis.    This  only
X            controls the  default;  the  value  you  give  here  may  be
X            overridden  at  run-time  by setting an environment variable
X            named SHELL (or COMSPEC for MS-DOS).  Its value  must  be  a
X            string constant, so be careful about quoting.  
X
X     -DTAGS=4string5 
X            This  sets the name of the "tags" file, which is used by the
X            :tag command.  Its value must be a string  constant,  so  be
X            careful about quoting.  
X
X     -DCS_IBMPC 
X            The  digraph  table  and flipcase option will normally start
X            out empty.  However, if you add -DCS_IBMPC or -DCS_LATIN1 to 
X            your CFLAGS, then they will start  out  filled  with  values
X            that are appropriate for the IBM PC character set or the ISO 
X
X
X
X
X
X     Elvis 1.4                     CFLAGS                       Page 9-3
X
X
X            Latin-1 character set, respectively.  
X
X     -DDEBUG 
X            This  adds  the  ":debug" and ":validate" commands, and also
X            adds many internal consistency checks.    It  increases  the
X            size of the ".text" segment by about 6K.  
X
X     -DCRUNCH 
X            This  flag  removes some non-critical code, so that Elvis is
X            smaller.  For example,  it  removes  a  short-cut  from  the
X            regexp package,  so  that  text  searches are slower.  Also,
X            screen updates are not as efficient.  A  couple  of  obscure
X            features are disabled by this, too.  
X
X     -DNO_MKEXRC 
X            This  removes  the  ":mkexrc" command, so you have to create
X            any .exrc files manually.  The size  of  the  .text  segment
X            will be reduced by about 600 bytes.  
X
X     -DNO_CHARATTR 
X            Permanently disables  the charattr option.  This reduces the
X            size of your ".text" segment by about 850 bytes.  
X
X     -DNO_RECYCLE 
X            Normally, Elvis will recycle space (from the tmp file) which 
X            contains totally obsolete text.   This  flag  disables  this
X            recycling.   Without recycling, the ".text" segment is about
X            1K smaller than it would otherwise  be,  but  the  tmp  file
X            grows much  faster.  If you have a lot of free space on your
X            harddisk, but Elvis is too bulky to run with recycling, then 
X            try it without recycling.  
X
X            When using a version of Elvis that has  been  compiled  with
X            -DNO_RECYCLE,  you  should  be  careful to avoid making many
X            small changes to a file because each individual change  will
X            cause the  tmp  file  to  grow  by at least 1k.  Hitting "x"
X            thirty times counts as  thirty  changes,  but  typing  "30x"
X            counts as  one  change.   Also, you should occasionally do a
X            ":w" followed by a ":e" to start with a fresh tmp file.  
X
X     -DNO_SENTENCE 
X            Leaves out the "(" and ")" visual mode commands.  Also,  the
X            "[[",  "]]",  "{", and "}" commands will not recognize *roff
X            macros.  The sections and paragraphs options go away.   This
X            saves about 650 bytes in the ".text" segment.  
X
X     -DNO_CHARSEARCH 
X            Leaves   out  the  visual  commands  which  locate  a  given
X            character in the current line: "f", "t", "F", "T",  ","  and
X            ";".  This saves about 900 bytes.  
X
X     -DNO_EXTENSIONS 
X            Leaves out the "K" and "#" visual commands.  Also, the arrow 
X            keys will  no  longer work in input mode.  (Other extensions
X            are  either  inherent  in  the  design  of  elvis,  or   are
X            controlled  by  more  specific  flags, or are too tiny to be
X            worth removing.) This saves about 250 bytes.  
X
X
X
X
X
X
X     Elvis 1.4                     CFLAGS                       Page 9-4
X
X
X     -DNO_MAGIC 
X            Permanently  disables  the  "magic"  option,  so  that  most
X            meta-characters   in   a   regular   expression   are  *NOT*
X            recognized.  This saves about 3k of  space  in  the  ".text"
X            segment,  because the complex regular expression code can be
X            replaced by much simpler code.  
X
X     -DNO_SHOWMODE 
X            Permanently disables the "showmode" option, saving about 250 
X            bytes.  
X
X     -DNO_CURSORSHAPE 
X            Normally, Elvis tries to adjust the shape of the cursor as a 
X            reminder of which mode you're in.  The -DNO_CURSORSHAPE flag 
X            disables this, saving about 150 bytes.  
X
X     -DNO_DIGRAPH 
X            To allow  entry  of  non-ASCII  characters,  Elvis  supports
X            digraphs.  A digraph is a single (non-ASCII) character which 
X            is   entered   as   a   combination  of  two  other  (ASCII)
X            characters.   If  you  don't   need   to   input   non-ASCII
X            characters,  or  if  your  keyboard supports a better way of
X            entering non-ASCII characters,  then  you  can  disable  the
X            digraph code and save about 450 bytes.  
X
X     -DNO_ERRLIST 
X            Elvis   adds  a  ":errlist"  command,  which  is  useful  to
X            programmers.  If  you  don't  need  this  feature,  you  can
X            disable it  via the -DNO_ERRLIST flag.  This will reduce the
X            .text segment by about 900 bytes, and the  .bss  segment  by
X            about 300 bytes.  
X
X     -DNO_ABBR 
X            The -DNO_ABBR flag disables the ":abbr" command, and reduces 
X            the size of Elvis by about 600 bytes.  
X
X     -DNO_OPTCOLS 
X            When  Elvis  displays  the  current options settings via the
X            ":set"  command,  the  options  are  normally  sorted   into
X            columns.   The  -DNO_OPTCOLS  flag  causes the options to be
X            sorted across  the  rows,  which  is  much  simpler.     The
X            -DNO_OPTCOLS flag will reduce the size of your .text segment 
X            by about 500 bytes.  
X
X     -DNO_MODELINE 
X            This removes all support for modelines.  
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/cflags.doc` -ne 11052
then
echo doc/cflags.doc damaged!
fi
fi

if test -f doc/differ.doc -a "$1" != -f
then
echo Will not overwrite doc/differ.doc
else
echo Extracting doc/differ.doc
sed 's/^X//' >doc/differ.doc <<\eof
X
X     Elvis 1.4      DIFFERENCES BETWEEN ELVIS & BSD VI/EX       Page 7-1
X
X
XE7.  DIFFERENCES BETWEEN ELVIS & BSD VI/EXF
X
X
X   E7.1  ExtensionsF
X
X   :mkexrc
X   :mk
X
X        This  EX  command saves the current :set and :map configurations
X     in the ".exrc" file in your current directory.  
X
X   :Next
X   :previous
X   :N
X   :pre
X
X        These commands move backwards through the args list.  
X
X   zz
X
X        In visual command mode, the (lowercase) "zz" command will center 
X     the current line on the screen, like "z=".  
X
X   .
X
X        The default count value for  .  is  the  same  as  the  previous
X     command which  . is meant to repeat.  However, you can supply a new
X     count if you wish.  For example, after "3dw",  "."  will  delete  3
X     words, but "5." will delete 5 words.  
X
X   ".
X
X        The  text  which was most recently input (via a "cw" command, or
X     something similar) is saved in a cut buffer called ". (which  is  a
X     pretty hard name to write in an English sentence).  
X
X   K
X
X        In  visual command mode, you can move the cursor onto a word and
X     press shift-K to have Elvis run a reference program  to  look  that
X     word up.   This command alone is worth the price of admission!  See
X     the ctags and ref programs.  
X
X   #
X
X        In visual command mode, you can move the cursor  onto  a  number
X     and then  hit ## or #+ to increment that number by 1.  To increment
X     it by a larger amount, type in the increment value  before  hitting
X     the initial  #.    The  number  can  also  be decremented or set by
X     hitting #- or #=, respectively.  
X
X   input
X
X        You can backspace past the beginning of the line.  
X
X
X
X
X
X
X
X
X
X     Elvis 1.4      DIFFERENCES BETWEEN ELVIS & BSD VI/EX       Page 7-2
X
X
X        The arrow keys work in input mode.  
X
X        If you type control-A, then the text that you input last time is 
X     inserted.  You will remain in input mode, so you can backspace over 
X     part of it, or add more to it.  (This is sort of like control-@  on
X     the real vi, except that control-A really works.) 
X
X        Control-P will insert the contents of the cut buffer.  
X
X        Real  vi  can  only  remember up to 128 characters of input, but
X     Elvis can remember any amount.  
X
X        The ^T and ^D keys can adjust the indent of  a  line  no  matter
X     where the cursor happens to be in that line.  
X
X        You  can  save your file and exit Elvis directly from input mode
X     by hitting control-Z twice.  
X
X        Elvis supports digraphs as a way to enter non-ASCII characters.  
X
X   :set inputmode
X   :se im
X
X        If you set this flag in your .exrc file, then elvis  will  start
X     up in input mode instead of visual command mode.  
X
X   :set charattr
X   :se ca
X
X        Elvis  can  display  "backslash-f" style character attributes on
X     the screen as you edit.  The following example shows the recognized 
X     atributes: 
X
X            normal \fBboldface\fR \fIitalics\fR \fUunderlined\fR normal
X
X        NOTE: you must compile elvis without the -DNO_CHARATTR flag  for
X     this to work.  
X
X   :set sync
X   :se sy
X
X        After  a  crash, you can usually recover the altered form of the
X     file from the temporary file that Elvis uses.  With the sync option 
X     turned on, the odds are shifted a little more in your favor because 
X     Elvis will perform a sync() call after each change has been written 
X     to the temporary file.  
X
X   cursor shape
X
X        Elvis changes the shape of the cursor  to  indicate  which  mode
X     you're  in, if your terminal's termcap entry includes the necessary
X     capabilities.  
X
X   :set hideformat
X   :se hf
X
X
X
X
X
X
X
X
X     Elvis 1.4      DIFFERENCES BETWEEN ELVIS & BSD VI/EX       Page 7-3
X
X
X        This option hides format control lines.  (They are displayed  on
X     the screen as blank lines.) 
X
X   :errlist
X   *
X   elvis -m
X
X        Elvis  is  clever  enough to parse the error messages emitted by
X     many compilers.  To use  this  feature,  you  should  collect  your
X     compiler's  error messages into a file called "errlist"; elvis will
X     read this file,  determine  which  source  file  caused  the  error
X     messages,  start  editing  that  file,  move the cursor to the line
X     where the error was detected, and display the error message on  the
X     status line.  Nifty!  
X
X
X   E7.2  OmissionsF
X
X        The replace  mode  is  a hack.  It doesn't save the text that it
X     overwrites.  
X
X        Long lines are displayed differently -- where the real vi  would
X     wrap  a  long  line  onto  several rows of the screen, Elvis simply
X     displays part of the line, and allows  you  to  scroll  the  screen
X     sideways to see the rest of it.  
X
X        The ":preserve"  and ":recover" commands are missing.  So is the
X     -r flag.  I've never had a good  reason  to  use  ":preserve",  and
X     since  ":recover"  is used so rarely I decided to implement it as a
X     separate program.  There's no need to load the recovery  code  into
X     memory every time you edit a file, I figured.  
X
X        LISP support is missing.  
X
X        Due  to  naming  conventions used for the temporary files, Elvis
X     can be creating no more that one new  file  per  directory  at  any
X     given time.  Any number of existing files can be edited at the same 
X     time on multitasking computer systems, but only one new file can be 
X     created simultaneously per directory.  To relieve this problem, you 
X     would have to edit tmp.c and virec.c This is expected to be done in 
X     version 1.5 
X
X        Autoindent mode acts a little different from the real vi.  It is 
X     still  quite  useful,  but  if you frequently use both vi and elvis
X     then the differences may be  annoying.    Autoindent  is  -1gradually-0
X     improving.  
X
X        The  visual  "put"  command  cannot be repeated by hitting the .
X     key.  
X
X
X
X
X
X
X
X
X
X
X
X
X
eof
if test `wc -c <doc/differ.doc` -ne 5908
then
echo doc/differ.doc damaged!
fi
fi

exit 0
-------------------------------------------------------------------------------
Steve Kirkendall     kirkenda at cs.pdx.edu      Grad student at Portland State U.



More information about the Alt.sources mailing list