







                   VVii//EExx RReeffeerreennccee MMaannuuaall

                        _K_e_i_t_h _B_o_s_t_i_c

                 Computer Science Division
 Department of Electrical Engineering and Computer Science
             University of California, Berkeley
                Berkeley, California  94720




                          _A_b_s_t_r_a_c_t



     This document is the reference guide for the 4.4BSD
implementations of nneexx/nnvvii, which are implementations of
the historic Berkeley eexx/vvii editors.





                         _L_i_c_e_n_s_i_n_g



Copyright (c) 1991, 1992, 1993, 1994
     The  Regents  of  the  University  of  California.  All
Rights Reserved.

Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996
     Keith Bostic.  All Rights Reserved.


     The vi program is freely redistributable.  You are wel-
come to copy, modify and share it with others under the con-
ditions listed in the LICENSE file.  If any company (not in-
dividual!)  finds vi sufficiently useful that you would have
purchased it, or if any company wishes to  redistribute  it,
contributions to the authors would be appreciated.























                      _A_c_k_n_o_w_l_e_d_g_e_m_e_n_t_s




     Bruce  Englar  encouraged  the early development of
the historic eexx/vvii editor.  Peter Kessler  helped  bring
sanity  to  version  2's command layout.  Bill Joy wrote
versions 1 and 2.0 through 2.7, and created  the  frame-
work  that users see in the present editor.  Mark Horton
added macros and other features and made eexx/vvii work on a
large number of terminals and Unix systems.

     NNvvii is originally derived from software contributed
to the University of California, Berkeley by Steve Kirk-
endall, the author of the vvii clone eellvviiss.

     IEEE  Standard  Portable Operating System Interface
for Computer Environments (POSIX) 1003.2  style  Regular
Expression support was done by Henry Spencer.

     The  curses  library  was  originally  done  by Ken
Arnold.  Scrolling and reworking for  nnvvii  was  done  by
Elan Amir.

     George  Neville-Neil added the Tcl interpreter, and
Sven Verdoolaege added the Perl interpreter.

     Rob Mayoff added Cscope support.

     The Institute of Electrical and  Electronics  Engi-
neers  has  given  us  permission to reprint portions of
their documentation.   Portions  of  this  document  are
reprinted and reproduced from IEEE Std 1003.2-1992, IEEE
Standard Portable Operating System Interface for Comput-
er Environments (POSIX), copyright 1992 by the Institute
of Electrical and Electronics Engineers, Inc.

     The financial support of UUNET Communications  Ser-
vices is gratefully acknowledged.























UUSSDD::1133--44                                     VVii//EExx RReeffeerreennccee


11..  DDeessccrriippttiioonn

     VVii is a screen oriented text editor.  EExx is a line-
oriented text editor.  EExx and vvii  are  different  inter-
faces  to the same program, and it is possible to switch
back and forth during an  edit  session.   VViieeww  is  the
equivalent of using the --RR (read-only) option of vvii.

     This  reference manual is the one provided with the
nneexx/nnvvii versions of the eexx/vvii text editors.  NNeexx/nnvvii are
intended  as bug-for-bug compatible replacements for the
original Fourth Berkeley  Software  Distribution  (4BSD)
eexx/vvii programs.  This reference manual is accompanied by
a traditional-style manual page.  That manual  page  de-
scribes the functionality found in eexx/vvii in far less de-
tail than the description here.   In  addition,  it  de-
scribes the system interface to eexx/vvii, e.g. command line
options, session recovery, signals, environmental  vari-
ables, and similar things.

     This reference is intended for users already famil-
iar with eexx/vvii.  Anyone  else  should  almost  certainly
read a good tutorial on the editor first.  If you are in
an unfamiliar environment, and you  absolutely  have  to
get  work  done  immediately,  see  the section entitled
"FFaasstt SSttaarrttuupp" in  the  manual  page.   It  is  probably
enough to get you started.

     There  are  a  few features in nneexx/nnvvii that are not
found in historic versions of eexx/vvii.  Some of  the  more
interesting  of  those features are briefly described in
the next section, entitled "AAddddiittiioonnaall  FFeeaattuurreess".   For
the  rest of this document, nneexx/nnvvii is used only when it
is necessary to distinguish it from the historic  imple-
mentations of eexx/vvii.

     Future  versions  of this software will be periodi-
cally made available by anonymous ftp, and  can  be  re-
trieved   from  ftp.cs.berkeley.edu,  in  the  directory
ucb/4bsd.

22..  AAddddiittiioonnaall FFeeaattuurreess iinn NNeexx//NNvvii

     There are a few features in nneexx/nnvvii  that  are  not
found  in  historic versions of eexx/vvii.  Some of the more
interesting of these are as follows:

88--bbiitt cclleeaann ddaattaa,, llaarrggee lliinneess,, ffiilleess
     NNeexx/nnvvii will edit any format  file.   Line  lengths
     are limited by available memory, and file sizes are
     limited by available disk space.  The vvii text input
     mode  command  <<ccoonnttrrooll--XX>>  can insert any possible
     character value into the text.










VVii//EExx RReeffeerreennccee                                     UUSSDD::1133--55


BBaacckkggrroouunndd aanndd ffoorreeggrroouunndd ssccrreeeennss
     The bbgg command backgrounds the current screen,  and
     the  ffgg  command  foregrounds backgrounded screens.
     The ddiissppllaayy command can be used to list  the  back-
     ground screens.

CCoommmmaanndd EEddiittiinngg
     You  can  enter a normal editing window on the col-
     lected commands that you've entered on the vvii colon
     command-line,  and  then  modify and/or execute the
     commands.  See the cceeddiitt edit option for  more  in-
     formation.

DDiissppllaayyss
     The ddiissppllaayy command can be used to display the cur-
     rent buffers, the  backgrounded  screens,  and  the
     tags stack.

EExxtteennddeedd RReegguullaarr EExxpprreessssiioonnss
     The  eexxtteennddeedd  option causes Regular Expressions to
     be interpreted as as Extended Regular  Expressions,
     (i.e. _e_g_r_e_p(1) style Regular Expressions).

FFiillee NNaammee CCoommpplleettiioonn
     It  is possible to do file name completion and file
     name displays when  entering  commands  on  the  vvii
     colon  command-line.  See the ffiilleecc option for more
     information.

IInnffiinniittee uunnddoo
     Changes made during an edit session may  be  rolled
     backward and forward.  A ..  command immediately af-
     ter a uu command continues either forward  or  back-
     ward depending on whether the uu command was an undo
     or a redo.

LLeefftt--rriigghhtt ssccrroolllliinngg
     The lleeffttrriigghhtt option causes nnvvii  to  do  left-right
     screen  scrolling,  instead  of  the traditional vvii
     line wrapping.

MMeessssaaggee CCaattaallooggss
     It is possible to display informational  and  error
     messages in different languages by providing a cat-
     alog of messages.  See the mmssggccaatt  option  and  the
     file catalog/README for more information.

IInnccrreemmeennttiinngg nnuummbbeerrss
     The  ##  command increments or decrements the number
     referenced by the cursor.

PPrreevviioouuss ffiillee
     The pprreevviioouuss command edits the previous  file  from










UUSSDD::1133--66                                     VVii//EExx RReeffeerreennccee


     the argument list.

SSccrriippttiinngg llaanngguuaaggeess
     The  ::ppee[[rrll]] ccmmdd, ::ppeerrlldd[[oo]] ccmmdd and ::ttcc[[ll]] ccmmdd com-
     mands execute Perl and Tcl/Tk commands, respective-
     ly,  on  lines  from  the  edit  buffer.   See  the
     "SSccrriippttiinngg LLaanngguuaaggeess" section and the specific com-
     mands for more information.

SSpplliitt ssccrreeeennss
     The EEddiitt, EExx, NNeexxtt, PPrreevviioouuss, TTaagg and VViissuuaall (in vvii
     mode) commands  divide  the  screen  into  multiple
     editing regions and then perform their normal func-
     tion in a new screen area.  The <<ccoonnttrrooll--WW>> command
     rotates between the foreground screens.  The rreessiizzee
     command can be used to grow or shrink a  particular
     screen.

TTaagg ssttaacckkss
     Tags  are now maintained in a stack.  The <<ccoonnttrrooll--
     TT>> command returns to the  previous  tag  location.
     The  ttaaggppoopp  command returns to the most recent tag
     location by default, or, optionally to  a  specific
     tag number in the tag stack, or the most recent tag
     from a specified file.  The ddiissppllaayy command can  be
     used  to  list  the tags stack.  The ttaaggttoopp command
     returns to the top of the tag stack.

UUssaaggee iinnffoorrmmaattiioonn
     The eexxuussaaggee and vviiuussaaggee commands provide usage  in-
     formation  for all of the eexx and vvii commands by de-
     fault, or, optionally, for a  specific  command  or
     key.

WWoorrdd sseeaarrcchh
     The  <<ccoonnttrrooll--AA>> command searches for the word ref-
     erenced by the cursor.

33..  SSttaarrttuupp IInnffoorrmmaattiioonn

     EExx/vvii interprets one of two possible  environmental
variables  and  reads up to three of five possible files
during startup.  The variables and files are expected to
contain eexx commands, not vvii commands.  In addition, they
are interpreted _b_e_f_o_r_e the file to be  edited  is  read,
and  therefore many eexx commands may not be used.  Gener-
ally, any command that requires output to the screen  or
that  needs  a file upon which to operate, will cause an
error if included in a  startup  file  or  environmental
variable.

     Because  the eexx command set supported by nneexx/nnvvii is
a superset of the command set  supported  by  historical










VVii//EExx RReeffeerreennccee                                     UUSSDD::1133--77


implementations of eexx, nneexx/nnvvii can use the startup files
created for the historical implementations, but the con-
verse may not be true.

     If  the --ss (the historic - option) is specified, or
if standard input is redirected from a file,  all  envi-
ronmental variables and startup files are ignored.

     Otherwise,  startup  files  and environmental vari-
ables are handled in the following order:

 (1)   The file /etc/vi.exrc is read, as long as  it  is
       owned by root or the effective user ID of the us-
       er.

 (2)   The environmental variable NEXINIT (or the  vari-
       able EXINIT, if NEXINIT is not set) is interpret-
       ed.

 (3)   If neither NEXINIT or EXINIT  was  set,  and  the
       HOME  environmental  variable  is  set,  the file
       $HOME/.nexrc  (or  the   file   $HOME/.exrc,   if
       $HOME/.nexrc  does not exist) is read, as long as
       the effective user ID of the user is root  or  is
       the same as the owner of the file.

       When  the  $HOME directory is being used for both
       nneexx/nnvvii and an historic implementation of  eexx/vvii,
       a  possible  solution  is to put nneexx/nnvvii specific
       commands in the .nexrc file, along with a ::ssoouurrccee
       $$HHOOMMEE//..eexxrrcc  command to read in the commands com-
       mon to both implementations.

 (4)   If the eexxrrcc option was turned on by  one  of  the
       previous  startup  information  sources, the file
       .nexrc (or the file .exrc, if .nexrc does not ex-
       ist) is read, as long as the effective user ID of
       the user is the same as the owner of the file.

     No startup file is read if it is writable by anyone
other than its owner.

     It  is not an error for any of the startup environ-
mental variables or files not to exist.

     Once all environmental variables  are  interpreted,
and  all  startup  files  are read, the first file to be
edited is read in (or a temporary file is created).

     As soon as an existing file is loaded  (either  due
to  the  command line parameters or from within the edi-
tor), any command specified using the --cc option is  exe-
cuted,  in  the  context of that file.  Note that such a










UUSSDD::1133--88                                     VVii//EExx RReeffeerreennccee


command is an eexx command and thus obeys the eexx behaviour
by  first  jumping  to the end of the file, even if used
with vvii.

44..  RReeccoovveerryy

     There is no recovery program for nneexx/nnvvii, nor  does
nneexx/nnvvii run setuid.  Recovery files are created readable
and writable by the owner only.  Users may  recover  any
file  which they can read, and the superuser may recover
any edit session.

     Edit sessions are backed by files in the  directory
named    by    the    rreeccddiirr   option   (the   directory
/var/tmp/vi.recover   by   default),   and   are   named
"vvii..XXXXXXXXXXXX",  where  "XXXXXXXXXXXX" is a number related to the
process ID.  When a file is first modified, a second re-
covery  file containing an email message for the user is
created, and is named  "rreeccoovveerr..XXXXXXXXXXXX",  where,  again,
"XXXXXXXXXXXX"  is associated with the process ID.  Both files
are removed at the end of a  normal  edit  session,  but
will remain if the edit session is abnormally terminated
or the user runs the eexx pprreesseerrvvee command.

     The rreeccddiirr option may be set in either  the  user's
or  system's  startup information, changing the recovery
directory.  (Note, however, that if a memory based  file
system  is used as the backup directory, each system re-
boot will delete all of the recovery  files!   The  same
caution  applies  to  directories such as /tmp which are
cleared  of  their  contents  by  a  system  reboot,  or
/usr/tmp  which  is periodically cleared of old files on
many systems.)

     The recovery directory should be owned by root,  or
at  least  by  a pseudo-user.  In addition, if directory
"sticky-bit"  semantics  are  available,  the  directory
should have the sticky-bit set so that files may only be
removed by their owners.  The recovery directory must be
read, write, and executable by any user, i.e. mode 1777.

     If the recovery directory  does  not  exist,  eexx/vvii
will  attempt  to create it.  This can result in the re-
covery directory being owned by  a  normal  user,  which
means that that user will be able to remove other user's
recovery and backup files.  This is annoying, but is not
a  security issue as the user cannot otherwise access or
modify the files.

     The recovery file has all of the necessary informa-
tion  in  it to enable the user to recover the edit ses-
sion.  In addition, it has all of  the  necessary  email
headers  for  _s_e_n_d_m_a_i_l(8).  When the system is rebooted,










VVii//EExx RReeffeerreennccee                                     UUSSDD::1133--99


all of the files in  /var/tmp/vi.recover  named  "rreeccoovv--
eerr..XXXXXXXXXXXX" should be sent to their owners, by email, us-
ing the --tt option of sseennddmmaaiill (or a similar mechanism in
other  mailers).   If  eexx/vvii  receives a hangup (SIGHUP)
signal, or the user executes the  eexx  pprreesseerrvvee  command,
eexx/vvii  will automatically email the recovery information
to the user.

     If your system does not have the  sseennddmmaaiill  utility
(or  a  mailer program which supports its interface) the
source file nvi/common/recover.c will have to  be  modi-
fied to use your local mail delivery programs.  Note, if
nneexx/nnvvii is changed to use another mailer, it  is  impor-
tant to remember that the owner of the file given to the
mailer is the nneexx/nnvvii  user,  so  nothing  in  the  file
should be trusted as it may have been modified in an ef-
fort to compromise the system.

     Finally, the owner execute bit  is  set  on  backup
files  when  they  are  created, and unset when they are
first modified, e.g. backup files that have no associat-
ed  email  recovery file will have this bit set.  (There
is also a small window where empty files can be  created
and  not  yet  have  this  bit  set.  This is due to the
method in which the  files  are  created.)   Such  files
should be deleted when the system reboots.

     A  simple  way  to  do  this  cleanup is to run the
Bourne shell script rreeccoovveerr, from your /etc/rc.local (or
other system startup) file.  The script should work with
the historic Bourne shell, a POSIX 1003.2 shell  or  the
Korn  shell.  The rreeccoovveerr script is installed as part of
the nneexx/nnvvii installation process.

     Consult the manual page for details  on  recovering
preserved or aborted editing sessions.

55..  SSiizziinngg tthhee SSccrreeeenn

     The  size  of  the screen can be set in a number of
ways.  EExx/vvii takes the following steps until values  are
obtained  for both the number of rows and number of col-
umns in the screen.

 (1)   If the environmental variable LINES exists, it is
       used to specify the number of rows in the screen.

 (2)   If the environmental variable COLUMNS exists,  it
       is  used  to specify the number of columns in the
       screen.

 (3)   The TIOCGWINSZ _i_o_c_t_l(2) is attempted on the stan-
       dard error file descriptor.










UUSSDD::1133--1100                                    VVii//EExx RReeffeerreennccee


 (4)   The  termcap entry (or terminfo entry on System V
       machines) is checked for the  "li"  entry  (rows)
       and the "co" entry (columns).

 (5)   The  number  of rows is set to 24, and the number
       of columns is set to 80.

     If a window change size signal  (SIGWINCH)  is  re-
ceived,  the  new window size is retrieved using the TI-
OCGWINSZ _i_o_c_t_l(2) call, and all other information is ig-
nored.

66..  CChhaarraacctteerr DDiissppllaayy

     In  both  eexx and vvii printable characters as defined
by _i_s_p_r_i_n_t(3) are displayed using  the  local  character
set.

     Non-printable  characters, for which _i_s_c_n_t_r_l(3) re-
turns true, and which are less than octal \040, are dis-
played  as  the string "^<character>", where <character>
is the character that is the original character's  value
offset  from  the "@" character.  For example, the octal
character \001 is displayed as "^A".  If _i_s_c_n_t_r_l(3)  re-
turns true for the octal character \177, it is displayed
as the string "^?".  All other characters are  displayed
as either hexadecimal values, in the form "0x<high-half-
byte> ... 0x<low-halfbyte>", or as octal values, in  the
form  "\<high-one-or-two-bits>  ...  \<low-three-bits>".
The display of unknown characters is based on the  value
of the ooccttaall option.

     In vvii command mode, the cursor is always positioned
on the last column of characters which take up more than
one  column  on  the screen.  In vvii text input mode, the
cursor is positioned on the first column  of  characters
which take up more than one column on the screen.

77..  MMuullttiippllee SSccrreeeennss

     NNvvii  supports multiple screens by dividing the win-
dow into regions.  It also supports stacks of screens by
permitting  the  user  to change the set of screens that
are currently displayed.

     The EEddiitt, EExx, FFgg, NNeexxtt, PPrreevviioouuss,  TTaagg  and  VViissuuaall
(in vvii mode) commands divide the current screen into two
regions of approximately equal  size  and  then  perform
their  usual action in a new screen area.  If the cursor
is in the lower half of  the  screen,  the  screen  will
split up, i.e. the new screen will be above the old one.
If the cursor is in the upper half of  the  screen,  the
new screen will be below the old one.










VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--1111


     When  more  than  one  screen  is  editing  a file,
changes in any screen are reflected in all other screens
editing  the same file.  Exiting a screen without saving
any changes (or explicitly discarding them) is permitted
until  the  last  screen  editing the file is exited, at
which time the changes must be saved or discarded.

     The rreessiizzee command permits resizing  of  individual
screens.   Screens may be grown, shrunk or set to an ab-
solute number of rows.

     The ^^WW command is used to switch  between  screens.
Each ^^WW moves to the next lower screen in the window, or
to the first screen in the window if there are no  lower
screens.

     The  bbgg  command  "backgrounds" the current screen.
The screen disappears from the window, and the  rows  it
occupied  are taken over by a neighboring screen.  It is
an error to attempt to background the only screen in the
window.

     The  ddiissppllaayy  ssccrreeeennss command displays the names of
the  files  associated  with  the  current  backgrounded
screens in the window.

     The  ffgg  [[ffiillee]]  command moves the specified screen
from the list of backgrounded screens to the foreground.
If  no  file  argument is specified, the first screen on
the list is  foregrounded.   By  default,  foregrounding
consists  of  backgrounding  the current screen, and re-
placing its space in the window  with  the  foregrounded
screen.

     Capitalizing  the first letter of the command, i.e.
FFgg, will foreground the backgrounded  screen  in  a  new
screen instead of swapping it with the current screen.

     If  the  last  foregrounded screen in the window is
exited, and there are backgrounded  screens,  the  first
screen  on  the  list of backgrounded screens takes over
the window.

88..  TTaaggss,, TTaagg SSttaacckkss,, aanndd CCssccooppee

     NNvvii supports the  historic  vvii  tag  command  <<ccoonn--
ttrrooll--]]>>,  and  the  historic  eexx tag command ttaagg.  These
commands change the current file context to a new  loca-
tion,  based on information found in the tags files.  If
you are unfamiliar with these commands, you  should  re-
view their description in the eexx and vvii commands section
of this manual.   For  additional  information  on  tags
files,  see  the  discussion of the ttaaggss edit option and










UUSSDD::1133--1122                                    VVii//EExx RReeffeerreennccee


the system _c_t_a_g_s(1) manual page.

     In addition,  nnvvii  supports  the  notion  of  "tags
stacks", using the <<ccoonnttrrooll--TT>> command.  The <<ccoonnttrrooll--TT>>
command returns the user to the previous context,  i.e.,
the  last  place from which a <<ccoonnttrrooll--]]>> or ttaagg command
was entered.  These three  commands  provide  the  basic
functionality  which  allows  you  to  use  vvii to review
source code in a structured manner.

     NNvvii also provides two other basic eexx  commands  for
tag  support:  ttaaggppoopp and ttaaggttoopp.  The ttaaggppoopp command is
identical to the <<ccoonnttrrooll--TT>> command, with the addition-
al functionality that you may specify that modifications
to the current file are to be discarded.  This cannot be
done  using the <<ccoonnttrrooll--TT>> command.  The ttaaggttoopp command
discards all of the contexts that have been pushed  onto
the  tag  stack, returning to the context from which the
first <<ccoonnttrrooll--]]>> or ttaagg command was entered.

     The historic _c_t_a_g_s(1) tags file format supports on-
ly a single location per tag, normally the function dec-
laration or structure or string  definition.   More  so-
phisticated source code tools often provide multiple lo-
cations per tag, e.g., a list of the places from which a
function  is  called or a string definition is used.  An
example of this functionality is  the  System  V  source
code tool, ccssccooppee.

CCssccooppee  creates a database of information on source code
files, and supports a query language for  that  informa-
tion  as  described  in  the _c_s_c_o_p_e(1) manual page.  NNvvii
contains an interface to the ccssccooppee query language which
permits  you  to query ccssccooppee and then sequentially step
through the locations in the sources files which  ccssccooppee
returns.   There are two nnvvii commands which support this
ability to step through multiple  locations.   They  are
the  eexx  commands ttaaggnneexxtt and ttaaggpprreevv.  The ttaaggnneexxtt com-
mand moves to the next location  for  the  current  tag.
The  ttaaggpprreevv  command moves to the previous location for
the current tag.  (See the ttaaggnneexxtt and  ttaaggpprreevv  command
discussion in the eexx commands section of this manual for
more information.)  At any time during  this  sequential
walk,  you  may  use the <<ccoonnttrrooll--]]>>, ttaagg or ccssccooppee com-
mands to move to a new tag context,  and  then  use  the
<<ccoonnttrrooll--TT>>  or  ttaaggppoopp  commands to return and continue
stepping through the locations for this  tag.   This  is
similar to the previous model of a simple tag stack, ex-
cept that each entry in the tag stack may have more than
one file context that is of interest.

     Although  there is no widely distributed version of
_c_t_a_g_s(1) that creates tags files with multiple locations










VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--1133


per  tag, nnvvii has been written to understand the obvious
extension to the historic tags file format,  i.e.,  more
than  a  single line in the tags file with the same ini-
tial tag name.  If you wish to extend your ccttaaggss  imple-
mentation or other tool with which you build tags files,
this extension should be  simple  and  will  require  no
changes to nnvvii.

     The nnvvii and ccssccooppee interface is based on the new eexx
command ccssccooppee, which has five subcommands:  aadddd,  ffiinndd,
hheellpp,  kkiillll  and  rreesseett.  The subcommand ffiinndd itself has
eight subcommands: cc, dd, ee, ff, gg, ii, ss and tt.

ccss[[ccooppee]] aa[[dddd]] ffiillee
     The aadddd command attaches to  the  specified  ccssccooppee
     database.   The  file  name  is  expanded using the
     standard filename expansions.  If ffiillee is a  direc-
     tory,  the  file  "cscope.out" in that directory is
     used as the database.

     After nnvvii attaches to a new  database,  all  subse-
quent  ccssccooppee  queries  will  be asked of that database.
The result of any single query is the collection of  re-
sponse  to the query from all of the attached databases.

If the "CSCOPE_DIRS" environmental variable is set  when
nnvvii   is  run,  it  is  expected  to  be  a  <colon>  or
<blank>-separated list of ccssccooppee databases  or  directo-
ries  containing  ccssccooppee  databases,  to  which the user
wishes to attach.

::ccss[[ccooppee]] ff[[iinndd]] cc||dd||ee||ff||gg||ii||ss||tt bbuuffffeerr||ppaatttteerrnn
     The ffiinndd command is the ccssccooppee  query  command  for
     nnvvii.   For  this  command, nnvvii queries all attached
     ccssccooppee databases for the pattern.  If  the  pattern
     is  a  double-quote  character  followed by a valid
     buffer name (e.g., "<character>), then the contents
     of  the named buffer are used as the pattern.  Oth-
     erwise, the pattern is a Regular Expression.

     The ffiinndd command pushes the current  location  onto
     the  tags stack, and switches to the first location
     resulting from the query, if the query returned  at
     least one result.

     File names returned by the ccssccooppee query, if not ab-
     solute paths, are searched for relative to the  di-
     rectory  where  the ccssccooppee database is located.  In
     addition, if the file "cscope.tpath" appears in the
     same  directory  as  the ccssccooppee database, it is ex-
     pected to contain a colon-separated list of  direc-
     tory names where files referenced by its associated
     ccssccooppee database may be found.










UUSSDD::1133--1144                                    VVii//EExx RReeffeerreennccee


     The ffiinndd subcommand is one of the following:

     c        Find callers of the name.
     d        Find all function calls made from name.
     e        Find pattern.
     f        Find files with name as substring.
     g        Find definition of name.
     i        Find files #including name.
     s        Find all uses of name.
     t        Find assignments to name.

::ccss[[ccooppee]] hh[[eellpp]] [[ccoommmmaanndd]]
     List the ccssccooppee commands, or optionally list  usage
     help for any single ccssccooppee command.

::ddiissppllaayy cc[[oonnnneeccttiioonnss]]
     Display  the  list of ccssccooppee databases to which nnvvii
     is currently connected.

::ccss[[ccooppee]] kk[[iillll]] ##
     Disconnect from a specific  ccssccooppee  database.   The
     connection  number  is  the one displayed by the eexx
     ddiissppllaayy ccoonnnneeccttiioonnss command.

::ccss[[ccooppee]] rr[[eesseett]]
     Disconnect from all attached ccssccooppee databases.

     Cscope is not freely redistributable software,  but
is fairly inexpensive and easily available.  To purchase
a  copy  of  ccssccooppee,  see   http://www.att.com/ssg/prod-
ucts/toolchest.html.

99..  RReegguullaarr EExxpprreessssiioonnss aanndd RReeppllaacceemmeenntt SSttrriinnggss

     Regular  expressions are used in line addresses, as
the first part of the eexx ssuubbssttiittuuttee, gglloobbaall, and vv  com-
mands, and in search patterns.

     The  regular expressions supported by eexx/vvii are, by
default, the Basic Regular Expressions (BRE's) described
in  the IEEE POSIX Standard 1003.2.  The eexxtteennddeedd option
causes all regular expressions to be interpreted as  the
Extended  Regular  Expressions  (ERE's) described by the
same standard.  (See _r_e___f_o_r_m_a_t(7) for more information.)
Generally  speaking,  BRE's  are the Regular Expressions
found in _e_d(1) and _g_r_e_p(1), and ERE's  are  the  Regular
Expressions found in _e_g_r_e_p(1).

     The following is not intended to provide a descrip-
tion of Regular Expressions.  The information here  only
describes  strings  and  characters  which  have special
meanings in the eexx/vvii version of RE's, or options  which
change  the  meanings  of  characters that normally have










VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--1155


special meanings in RE's.

 (1)   An empty RE (e.g.  "//" or "??"  is equivalent to
       the last RE used.

 (2)   The  construct  "\<"  matches  the beginning of a
       word.

 (3)   The construct "\>" matches the end of a word.

 (4)   The character "~" matches the replacement part of
       the last ssuubbssttiittuuttee command.

     When  the mmaaggiicc option is _n_o_t set, the only charac-
ters with special meanings are a "^"  character  at  the
beginning of an RE, a "$" character at the end of an RE,
and the escaping character  "\".   The  characters  ".",
"*",  "[" and "~" are treated as ordinary characters un-
less preceded by a "\"; when preceded by a "\" they  re-
gain their special meaning.

     Replacement  strings  are the second part of a ssuubb--
ssttiittuuttee command.

     The character "&" (or "\&" if the mmaaggiicc  option  is
_n_o_t  set)  in the replacement string stands for the text
matched by the RE that is being replaced.  The character
"~"  (or "\~" if the mmaaggiicc option is _n_o_t set) stands for
the replacement part of the previous ssuubbssttiittuuttee command.
It  is  only  valid  after a ssuubbssttiittuuttee command has been
performed.

     The string "\#", where "#" is an integer value from
1  to  9,  stands for the text matched by the portion of
the RE enclosed in the "#"'th set of  escaped  parenthe-
ses,    e.g.     "\("    and    "\)".     For   example,
"s/abc\(.*\)def/\1/" deletes the strings "abc" and "def"
from the matched pattern.

     The  strings  "\l", "\u", "\L" and "\U" can be used
to modify  the  case  of  elements  in  the  replacement
string.  The string "\l" causes the next character to be
converted to lowercase; the string "\u" behaves similar-
ly, but converts to uppercase (e.g.  s/abc/\U&/ replaces
the string abc with ABC).  The string "\L" causes  char-
acters  up  to  the end of the string or the next occur-
rence of the strings "\e" or "\E"  to  be  converted  to
lowercase;  the  string "\U" behaves similarly, but con-
verts to uppercase.

     If the entire replacement pattern is "%", then  the
last replacement pattern is used again.











UUSSDD::1133--1166                                    VVii//EExx RReeffeerreennccee


     In vvii, inserting a <control-M> into the replacement
string will cause the matched line to be split into  two
lines  at that point.  (The <control-M> will be discard-
ed.)

1100..  SSccrriippttiinngg LLaanngguuaaggeess

     The nnvvii editor  currently  supports  two  scripting
languages, Tcl/Tk and Perl.  (Note that Perl4 isn't suf-
ficient, and that the Perl5 used must be  version  5.002
or  later.   See the "BBuuiillddiinngg NNvvii" section for more in-
formation.

     The scripting language  interface  is  still  being
worked on, therefore the following information is proba-
bly incomplete, probably wrong in cases, and  likely  to
change.  See the perl_api and tcl_api source directories
for more information.  As a quick reference, the follow-
ing  function  calls  are provided for both the Perl and
Tcl interfaces.  The Perl interface uses a slightly dif-
ferent naming convention, e.g. ``viFindScreen'' is named
``VI::FindScreen''.

vviiFFiinnddSSccrreeeenn ffiillee
     Return the screenIdassociated file.

vviiAAppppeennddLLiinnee ssccrreeeennIIdd lliinneeNNuummbbeerr tteexxtt
     Append  text  as  a  new  line  after  line  number
     lineNumber, in the screen screenId.

vviiDDeellLLiinnee ssccrreeeennIIdd lliinneeNNuumm
     Delete   the   line   lineNumber  from  the  screen
     screenId.

vviiGGeettLLiinnee ssccrreeeennIIdd lliinneeNNuummbbeerr
     Return  the  line  lineNumber   from   the   screen
     screenId.

vviiIInnsseerrttLLiinnee ssccrreeeennIIdd lliinneeNNuummbbeerr tteexxtt
     Insert  text  as  a  new  line  before  line number
     lineNumber in the screen screenId.

vviiLLaassttLLiinnee ssccrreeeennIIdd
     Return the line number of  the  last  line  in  the
     screen screenId.

vviiSSeettLLiinnee ssccrreeeennIIdd lliinneeNNuummbbeerr tteexxtt
     Change  the  line lineNumber in the screen screenId
     to match the specified text.

vviiGGeettMMaarrkk ssccrreeeennIIdd mmaarrkk
     Return the current line and column for  the  speci-
     fied mark from the screen screenId.










VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--1177


vviiSSeettMMaarrkk ssccrreeeennIIdd mmaarrkk lliinnee ccoolluummnn
     Set  the  specified mark to be at line line, column
     column, in the screen screenId.

vviiGGeettCCuurrssoorr ssccrreeeennIIdd
     Return the current line and column for  the  cursor
     in the screen screenId.

vviiSSeettCCuurrssoorr ssccrreeeennIIdd lliinnee ccoolluummnn
     Set the cursor in the screen screenId to the speci-
     fied line and column.

vviiMMssgg ssccrreeeennIIdd tteexxtt
     Display the specified text as a vi message  in  the
     screen screenId.

vviiNNeewwSSccrreeeenn ssccrreeeennIIdd [[ffiillee]]
     Create a new screen.

vviiEEnnddSSccrreeeenn ssccrreeeennIIdd
     Exit the screen screenId.

vviiSSwwiittcchhSSccrreeeenn ssccrreeeennIIdd ssccrreeeennIIdd
     Switch  from  the  screen  screenId  to  the screen
     screenId.

vviiMMaappKKeeyy ssccrreeeennIIdd kkeeyy ttccllpprroocc
     Map the specified key in the screen screenId to the
     Tcl procedure tclproc.

vviiUUnnmmMMaappKKeeyy ssccrreeeennIIdd kkeeyy
     Unmap the specified key in the screen screenId

vviiGGeettOOpptt ssccrreeeennIIdd ooppttiioonn
     Return  the  value of the specified option from the
     screen screenId.

vviiSSeettOOpptt ssccrreeeennIIdd ccoommmmaanndd
     Set one or more options in the screen screenId.

1111..  GGeenneerraall EEddiittoorr DDeessccrriippttiioonn

     When eexx or vvii are executed, the text of a  file  is
read  (or  a  temporary  file  is created), and then all
editing changes happen within the context of the copy of
the  file.   _N_o _c_h_a_n_g_e_s _a_f_f_e_c_t _t_h_e _a_c_t_u_a_l _f_i_l_e _u_n_t_i_l _t_h_e
_f_i_l_e _i_s _w_r_i_t_t_e_n _o_u_t, either using a write command or an-
other command which is affected by the aauuttoowwrriittee option.

     All files are locked (using  the  _f_l_o_c_k(2)  or  _f_c_-
_n_t_l(2) interfaces) during the edit session, to avoid in-
advertently making modifications to multiple  copies  of
the  file.   If a lock cannot be obtained for a file be-










UUSSDD::1133--1188                                    VVii//EExx RReeffeerreennccee


cause it is locked by another process, the edit  session
is  read-only  (as if the rreeaaddoonnllyy option or the --RR flag
had been specified).  If a lock cannot be  obtained  for
other  reasons,  the edit session will continue, but the
file status information (see  the  <<ccoonnttrrooll--GG>>  command)
will reflect this fact.

     Both  eexx and vvii are modeful editors, i.e. they have
two modes, "command" mode and "text  input"  mode.   The
former is intended to permit you to enter commands which
modifies already existing text.  The latter is  intended
to  permit  you to enter new text.  When eexx first starts
running, it is in command mode, and usually  displays  a
prompt  (see  the  pprroommpptt  option for more information).
The prompt is a single colon (":") character.  There are
three  commands that switch eexx into text input mode: aapp--
ppeenndd, cchhaannggee and iinnsseerrtt.  Once in input mode, entering a
line  containing  only  a single period (".")  ends text
input mode and returns to command mode, where the prompt
is redisplayed.

     When vvii first starts running, it is in command mode
as well.  There are eleven commands that switch vvii  into
text  input  mode:  AA,  aa, CC, cc, II, ii, OO, oo, RR, SS and ss.
Once in input mode, entering an <escape> character  ends
text input mode and returns to command mode.

     EExx/vvii present three different interfaces to editing
a file.  EExx presents  a  line  oriented  interface.   VVii
presents  a full screen display oriented interface, also
known as "visual mode".  In addition, there is  a  third
mode,  "open mode", which is line oriented, but supports
cursor movement and editing within the  displayed  line,
similarly  to  visual mode.  Open mode is not yet imple-
mented in nnvvii.

     The following words have special meanings  in  both
the eexx and vvii command descriptions:

<<iinntteerrrruupptt>>
     The  interrupt  character  is used to interrupt the
     current operation.  Normally <control-C>,  whatever
     character  is set for the current terminal is used.

<<lliitteerraall--nneexxtt>>
     The literal next character is used  to  escape  the
     subsequent  character  from  any  special  meaning.
     This character is always <control-V>.  If the  ter-
     minal  is  not  set up to do XON/XOFF flow control,
     then <control-Q> is used to mean  literal  next  as
     well.












VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--1199


ccuurrrreenntt ppaatthhnnaammee
     The  pathname of the file currently being edited by
     vi.  When the percent character ("%") appears in  a
     file  name  entered  as part of an eexx command argu-
     ment, it is replaced by the current pathname.  (The
     "%" character can be escaped by preceding it with a
     backslash.)

aalltteerrnnaattee ppaatthhnnaammee
     The name of the last file name mentioned in  an  eexx
     command,  or,  the previous current pathname if the
     last file mentioned becomes the current file.  When
     the  hash  mark  character  ("#") appears in a file
     name entered as part of an eexx command argument,  it
     is  replaced  by  the alternate pathname.  (The "#"
     character can be escaped by  preceding  it  with  a
     backslash.)

bbuuffffeerr
     One of a number of named areas for saving copies of
     text.  Commands that change or delete text can save
     the changed or deleted text into a specific buffer,
     for later use, if the command allows it  (i.e.  the
     eexx cchhaannggee command cannot save the changed text in a
     named buffer).  Buffers are  named  with  a  single
     character,   preceded   by  a  double  quote,  e.g.
     "<character> in vvii and without  the  double  quote,
     e.g.   <character>, in eexx.  (The double quote isn't
     necessary for eexx because buffers names are  denoted
     by  their  position in the command line.)  Historic
     implementations of eexx/vvii limited <character> to the
     alphanumeric characters; nneexx/nnvvii permits the use of
     any character without another meaning in the  posi-
     tion where a buffer name is expected.

     Buffers  named by uppercase characters are the same
     as buffers named by lowercase characters, e.g.  the
     buffer  named  by  the English character "A" is the
     same as the buffer named by the character "a", with
     the  exception that, if the buffer contents are be-
     ing changed (as with a text deletion or  vvii  cchhaannggee
     command),  the  text is _a_p_p_e_n_d_e_d to the buffer, in-
     stead of replacing the current contents.

     The buffers named by the numeric characters (in En-
     glish,  "1" through "9"), are special.  If a region
     of text including characters  from  more  than  one
     line, or a single line of text specified by using a
     line-oriented motion, is changed or deleted in  the
     file using the vvii cchhaannggee or ddeelleettee commands, a copy
     of the text is placed into the numeric buffer  "1",
     regardless of the user specifying another buffer in
     which to save it.  In addition,  there  are  a  few










UUSSDD::1133--2200                                    VVii//EExx RReeffeerreennccee


     commands  which,  when used as a motion with the vvii
     cchhaannggee and ddeelleettee commands, _a_l_w_a_y_s copy the  speci-
     fied  region  of  text into the numeric buffers re-
     gardless of the region  including  characters  from
     more than one line.  These commands are:


      <control-A>   %   (   )
     `<character>   /   ?   N
                n   {   }


     Before  this  copy  is  done,  the previous contents of
     buffer "1" are moved into buffer "2", "2"  into  buffer
     "3",  and  so  on.  The contents of buffer "9" are dis-
     carded.  In vvii, text may be explicitly stored into  the
     numeric buffers.  In this case, the buffer rotation de-
     scribed above occurs  before  the  replacement  of  the
     buffer's contents.  The numeric buffers are only avail-
     able in visual and open modes, and are  not  accessible
     by  eexx in any way, although changed and deleted text is
     still stored there while in eexx mode.

     When a vvii command synopsis shows both a [buffer] and  a
     [count], they may be presented in any order.

     Finally,  all  buffers are either "line" or "character"
     oriented.   All  eexx  commands  which  store  text  into
     buffers  are  line  oriented.   Some  vvii commands which
     store text into buffers are line oriented, and some are
     character oriented; the description for each applicable
     vvii command notes whether text copied into buffers using
     the  command  is  line or character oriented.  In addi-
     tion, the vvii command ddiissppllaayy bbuuffffeerrss displays the  cur-
     rent  orientation for each buffer.  Generally, the only
     importance attached to this orientation is that if  the
     buffer  is  subsequently  inserted  into the text, line
     oriented buffers create new lines for each of the lines
     they contain, and character oriented buffers create new
     lines for any lines _o_t_h_e_r than the first and last lines
     they  contain.   The  first and last lines are inserted
     into the text at the current cursor position,  becoming
     part  of  the  current line.  If there is more than one
     line in the buffer, however, the  current  line  itself
     will be split.

uunnnnaammeedd bbuuffffeerr
     The unnamed buffer is a text storage area which is used
     by commands that use or operate on  a  buffer  when  no
     buffer is specified by the user.  If the command stores
     text into a buffer, the text is stored into the unnamed
     buffer  even if a buffer is also specified by the user.











VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--2211


     It is not  possible  to  append  text  to  the  unnamed
     buffer.   If  text  is  appended to a named buffer, the
     named buffer contains both the old and new text,  while
     the  unnamed  buffer contains only the new text.  There
     is no way to explicitly reference the unnamed buffer.

     Historically, the contents of the unnamed  buffer  were
     discarded  by  many  different commands, even ones that
     didn't store text into it.  NNeexx/nnvvii never discards  the
     contents  of the unnamed buffer until new text replaces
     them.

wwhhiitteessppaaccee
     The characters <tab> and <space>.

<<ccaarrrriiaaggee--rreettuurrnn>>
     The character  represented  by  an  ASCII  <control-M>.
     This  character is almost always treated identically to
     a <newline> character, but differs in that  it  can  be
     escaped into the file text or into a command.

<<nneewwlliinnee>>
     The  character  represented  by  an  ASCII <control-J>.
     This character is almost always treated identically  to
     a  <control-M> character, but differs in that it cannot
     be escaped into the file text or into a command.

1122..  VVii DDeessccrriippttiioonn

     VVii takes up the entire screen  to  display  the  edited
file,  except for the bottom line of the screen.  The bottom
line of the screen is used to enter eexx commands, and for  vvii
error  and  informational messages.  If no other information
is being displayed, the default display can show the current
cursor  row  and cursor column, an indication of whether the
file has been modified, and the current mode of the  editor.
See the rruulleerr and sshhoowwmmooddee options for more information.

     Empty  lines  do not have any special representation on
the screen, but lines on the  screen  that  would  logically
come  after  the  end  of the file are displayed as a single
tilde ("~") character.  To differentiate between empty lines
and  lines consisting of only whitespace characters, use the
lliisstt option.  Historically, implementations of vvii have  also
displayed  some  lines  as single asterisk ("@") characters.
These were lines that were  not  correctly  displayed,  i.e.
lines  on the screen that did not correspond to lines in the
file, or lines that did not fit on the current screen.   NNvvii
never displays lines in this fashion.

     VVii  is  a  modeful editor, i.e. it has two modes, "com-
mand" mode and "text input" mode.  When vvii first starts,  it
is  in command mode.  There are several commands that change










UUSSDD::1133--2222                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


vvii into text input mode.  The <escape> character is used  to
resolve  the  text  input  into the file, and exit back into
command mode.  In vvii command mode, the cursor is always  po-
sitioned on the last column of characters which take up more
than one column on the screen.  In vvii text insert mode,  the
cursor is positioned on the first column of characters which
take up more than one column on the screen.

     When positioning the cursor to a new line  and  column,
the  type  of movement is defined by the distance to the new
cursor position.  If the new position is close,  the  screen
is scrolled to the new location.  If the new position is far
away, the screen is repainted so that the new position is on
the  screen.  If the screen is scrolled, it is moved a mini-
mal amount, and the cursor line will usually appear  at  the
top  or  bottom  of the screen.  If the screen is repainted,
the cursor line will appear in the center of the screen, un-
less  the  cursor  is sufficiently close to the beginning or
end of the file that this isn't possible.  If the  lleeffttrriigghhtt
option  is set, the screen may be scrolled or repainted in a
horizontal direction as well as in a vertical one.

     A major difference between the historical vvii  presenta-
tion  and  nnvvii is in the scrolling and screen oriented posi-
tion commands, <<ccoonnttrrooll--BB>>, <<ccoonnttrrooll--DD>>, <<ccoonnttrrooll--EE>>,  <<ccoonn--
ttrrooll--FF>>,  <<ccoonnttrrooll--UU>>, <<ccoonnttrrooll--YY>>, HH, LL and MM.  In histori-
cal implementations of vvii, these commands acted on  physical
(as  opposed  to  logical, or screen) lines.  For lines that
were sufficiently long  in  relation  to  the  size  of  the
screen,  this  meant  that single line scroll commands might
repaint the entire screen, scrolling or  screen  positioning
commands  might  not change the screen or move the cursor at
all, and some lines simply  could  not  be  displayed,  even
though  vvii would edit the file that contained them.  In nnvvii,
these commands act on logical, i.e. screen lines.   You  are
unlikely  to  notice  any  difference unless you are editing
files with lines significantly longer than a screen width.

     VVii keeps track of the currently "most attractive"  cur-
sor  position.   Each command description (for commands that
alter the current cursor position), specifies if the  cursor
is set to a specific location in the line, or if it is moved
to the "most attractive cursor position".  The latter  means
that the cursor is moved to the cursor position that is hor-
izontally as close as possible to the current  cursor  posi-
tion.   If the current line is shorter than the cursor posi-
tion vvii would select, the cursor is positioned on  the  last
character in the line.  (If the line is empty, the cursor is
positioned on the first column of the line.)  If  a  command
moves  the  cursor  to the most attractive position, it does
not alter the current  cursor  position,  and  a  subsequent
movement will again attempt to move the cursor to that posi-
tion.  Therefore, although a movement to a line shorter than










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--2233


the currently most attractive position will cause the cursor
to move to the end of that line, a subsequent movement to  a
longer  line  will cause the cursor to move back to the most
attractive position.

     In addition, the $$ command makes the end of  each  line
the  most  attractive cursor position rather than a specific
column.

     Each vvii command described below notes where the  cursor
ends up after it is executed.  This position is described in
terms of characters on the line, i.e.  "the previous charac-
ter",  or,  "the  last  character  in the line".  This is to
avoid needing to continually refer to on what  part  of  the
character the cursor rests.

     The  following  words  have special meaning for vvii com-
mands.

pprreevviioouuss ccoonntteexxtt
     The position of the cursor  before  the  command  which
     caused  the  last absolute movement was executed.  Each
     vvii command described in the next section that  is  con-
     sidered an absolute movement is so noted.  In addition,
     specifying _a_n_y address to an eexx command  is  considered
     an absolute movement.

mmoottiioonn
     A second vvii command can be used as an optional trailing
     argument to the vvii <<, >>, !!, cc, dd, yy, and (depending  on
     the ttiillddeeoopp option) ~~ commands.  This command indicates
     the end of the region of text that's  affected  by  the
     command.   The motion command may be either the command
     character repeated (in which case it means the  current
     line)  or  a  cursor  movement  command.  In the latter
     case, the region affected by the command  is  from  the
     starting  or stopping cursor position which comes first
     in the file, to  immediately  before  the  starting  or
     stopping cursor position which comes later in the file.
     Commands that operate on lines instead of using  begin-
     ning  and ending cursor positions operate on all of the
     lines that are wholly or partially in the  region.   In
     addition,  some other commands become line oriented de-
     pending on where in the text they are used.   The  com-
     mand descriptions below note these special cases.

     The following commands may all be used as motion compo-
     nents for vvii commands:















UUSSDD::1133--2244                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     <control-A>    <control-H>   <control-J>   <control-M>
     <control-N>    <control-P>       <space>             $
               %   '<character>             (             )
               +              ,             -             /
               0              ;             ?             B
               E              F             G             H
               L              M             N             T
               W             [[            ]]             ^
               _   `<character>             b             e
               f              h             j             k
               l              n             t             w
               {              |             }


     The optional count prefix available for some of the  vvii
     commands that take motion commands, or the count prefix
     available for the vvii commands that are used  as  motion
     components,  may  be  included and is _a_l_w_a_y_s considered
     part of the motion argument.  For example, the commands
     "c2w" and "2cw" are equivalent, and the region affected
     by the cc command is two words of text.  In addition, if
     the  optional count prefix is specified for both the vvii
     command and its motion component, the effect is  multi-
     plicative  and  is  considered part of the motion argu-
     ment.  For example, the commands "4cw" and  "2c2w"  are
     equivalent, and the region affected by the cc command is
     four words of text.

ccoouunntt
     A positive number used as an optional argument to  most
     commands, either to give a size or a position (for dis-
     play or movement commands), or as a repeat  count  (for
     commands  that modify text).  The count argument is al-
     ways optional and defaults to 1 unless otherwise  noted
     in the command description.

     When  a  vvii  command synopsis shows both a [buffer] and
     [count], they may be presented in any order.

wwoorrdd
     Generally, in languages where it is applicable, vvii rec-
     ognizes  two kinds of words.  First, a sequence of let-
     ters, digits and underscores, delimited  at  both  ends
     by:  characters  other  than letters, digits, or under-
     scores, the beginning or end of a line, and the  begin-
     ning or end of the file.  Second, a sequence of charac-
     ters other than letters, digits, underscores, or white-
     space  characters, delimited at both ends by: a letter,
     digit, underscore, or whitespace character, the  begin-
     ning  or end of a line, and the beginning or end of the
     file.  For example, the characters " !@#abc$%^  "  con-
     tain three words: "!@#", "abc" and "$%^".











VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--2255


     Groups  of empty lines (or lines containing only white-
     space characters) are treated as a single word.

bbiiggwwoorrdd
     A set of non-whitespace characters  preceded  and  fol-
     lowed  by whitespace characters or the beginning or end
     of the file or line.  For  example,  the  characters  "
     !@#abc$%^ " contain one bigword: "!@#abc$%^".

     Groups  of empty lines (or lines containing only white-
     space characters) are treated as a single bigword.

ppaarraaggrraapphh
     An area of text that begins with either  the  beginning
     of  a  file,  an empty line, or a section boundary, and
     continues until either an empty line, section boundary,
     or the end of the file.

     Groups  of empty lines (or lines containing only white-
     space characters) are treated as a single paragraph.

     Additional paragraph boundaries can  be  defined  using
     the ppaarraaggrraapphhss option.

sseeccttiioonn
     An  area  of text that starts with the beginning of the
     file or a line whose first character is an  open  brace
     ("{")  and  continues until the next section or the end
     of the file.

     Additional section boundaries can be defined using  the
     sseeccttiioonnss option.

sseenntteennccee
     An  area  of text that begins with either the beginning
     of the file or the first nonblank  character  following
     the  previous  sentence, paragraph, or section boundary
     and continues until the end of the  file  or  a  period
     (".")   exclamation point ("!")  or question mark ("?")
     character, followed by either  an  end-of-line  or  two
     whitespace characters.  Any number of closing parenthe-
     ses (")"), brackets ("]"), double-quote (""") or single
     quote  ("'")  characters can appear between the period,
     exclamation point, or question mark and the  whitespace
     characters or end-of-line.

     Groups  of empty lines (or lines containing only white-
     space characters) are treated as a single sentence.

1133..  VVii CCoommmmaannddss

     The following section describes the commands  available
in  the command mode of the vvii editor.  In each entry below,










UUSSDD::1133--2266                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


the tag line is a usage synopsis for the command  character.
In  addition, the final line and column the cursor rests up-
on, and any options which affect the command are noted.

[[ccoouunntt]] <<ccoonnttrrooll--AA>>
     Search forward count times for the current  word.   The
     current word begins at the first non-whitespace charac-
     ter on or after the current cursor  position,  and  ex-
     tends  up  to the next non-word character or the end of
     the line.  The search is literal, i.e. no characters in
     the  word  have any special meaning in terms of Regular
     Expressions.  It is an error if no matching pattern  is
     found  between the starting position and the end of the
     file.

     The <<ccoonnttrrooll--AA>> command is an absolute  movement.   The
     <<ccoonnttrrooll--AA>> command may be used as the motion component
     of other vvii commands, in which case any text copied in-
     to a buffer is character oriented.

     Line:    Set to the line where the word is found.
     Column:  Set to the first character of the word.
     Options: Affected  by  the  iiggnnoorreeccaassee and wwrraappssccaann op-
              tions.

[[ccoouunntt]] <<ccoonnttrrooll--BB>>
     Page backward count screens.  Two lines of overlap  are
     maintained,  if  possible,  by  displaying  the  window
     starting at line (top_line - count * window_size) +  2,
     where  window_size  is  the value of the wwiinnddooww option.
     (In the case of split screens, this size  is  corrected
     to  the  current  screen  size.)  It is an error if the
     movement is past the beginning of the file.

     Line:    Set to the last line of text displayed on  the
              screen.
     Column:  Set  to  the  first  nonblank character of the
              line.
     Options: Affected by the wwiinnddooww option.

[[ccoouunntt]] <<ccoonnttrrooll--DD>>
     Scroll forward count lines.  If count is not specified,
     scroll  forward  the  number  of lines specified by the
     last <<ccoonnttrrooll--DD>> or <<ccoonnttrrooll--UU>> command.   If  this  is
     the  first  <<ccoonnttrrooll--DD>>  or <<ccoonnttrrooll--UU>> command, scroll
     forward half the number of lines in  the  screen.   (In
     the  case  of split screens, the default scrolling dis-
     tance is corrected to half the  current  screen  size.)
     It  is  an error if the movement is past the end of the
     file.

     Line:    Set to the current line  plus  the  number  of
              lines scrolled.










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--2277


     Column:  Set  to  the  first  nonblank character of the
              line.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--EE>>
     Scroll forward count lines, leaving the cursor  on  the
     current  line  and column, if possible.  It is an error
     if the movement is past the end of the file.

     Line:    Unchanged unless the current line scrolls  off
              the  screen,  in  which  case it is set to the
              first line on the screen.
     Column:  Unchanged unless the current line scrolls  off
              the  screen,  in  which  case it is set to the
              most attractive cursor position.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--FF>>
     Page forward count screens.  Two lines of  overlap  are
     maintained,  if  possible,  by  displaying  the  window
     starting at line top_line + count *  window_size  -  2,
     where  window_size  is  the value of the wwiinnddooww option.
     (In the case of split screens, this size  is  corrected
     to  the  current  screen  size.)  It is an error if the
     movement is past the end of the file.

     Line:    Set to the first line on the screen.
     Column:  Set to the first  nonblank  character  of  the
              current line.
     Options: Affected by the wwiinnddooww option.

<<ccoonnttrrooll--GG>>
     Display the file information.  The information includes
     the current pathname, the current line, the  number  of
     total lines in the file, the current line as a percent-
     age of the total lines in the file,  if  the  file  has
     been  modified,  was  able  to be locked, if the file's
     name has been changed, and if the edit session is read-
     only.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--HH>>
[[ccoouunntt]] hh
     Move  the  cursor  back count characters in the current
     line.  It is an error if the cursor  is  on  the  first
     character in the line.

     The  <<ccoonnttrrooll--HH>>  and hh commands may be used as the mo-
     tion component of other vvii commands, in which case  any
     text copied into a buffer is character oriented.










UUSSDD::1133--2288                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Line:    Unchanged.
     Column:  Set  to the current - count character, or, the
              first  character  in  the  line  if  count  is
              greater than or equal to the number of charac-
              ters in the line before the cursor.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--JJ>>
[[ccoouunntt]] <<ccoonnttrrooll--NN>>
[[ccoouunntt]] jj
     Move the cursor down count lines without  changing  the
     current column.  It is an error if the movement is past
     the end of the file.

     The <<ccoonnttrrooll--JJ>>, <<ccoonnttrrooll--NN>> and jj commands may be used
     as  the motion component of other vvii commands, in which
     case any text copied into a buffer is line oriented.

     Line:    Set to the current line plus count.
     Column:  The most attractive cursor position.
     Options: None.

<<ccoonnttrrooll--LL>>
<<ccoonnttrrooll--RR>>
     Repaint the screen.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--MM>>
[[ccoouunntt]] ++
     Move the cursor down count lines to the first  nonblank
     character of that line.  It is an error if the movement
     is past the end of the file.

     The <<ccoonnttrrooll--MM>> and ++ commands may be used as  the  mo-
     tion  component of other vvii commands, in which case any
     text copied into a buffer is line oriented.

     Line:    Set to the current line plus count.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--PP>>
[[ccoouunntt]] kk
     Move  the  cursor  up count lines, without changing the
     current column.  It is an error if the movement is past
     the beginning of the file.

     The  <<ccoonnttrrooll--PP>>  and kk commands may be used as the mo-
     tion component of other vvii commands, in which case  any










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--2299


     text copied into a buffer is line oriented.

     Line:    Set to the current line minus count.
     Column:  The most attractive cursor position.
     Options: None.

<<ccoonnttrrooll--TT>>
     Return to the most recent tag context.  The <<ccoonnttrrooll--TT>>
     command is an absolute movement.

     Line:    Set to the context of the  previous  tag  com-
              mand.
     Column:  Set  to  the  context of the previous tag com-
              mand.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--UU>>
     Scroll backward count lines.  If count  is  not  speci-
     fied,  scroll backward the number of lines specified by
     the last <<ccoonnttrrooll--DD>> or <<ccoonnttrrooll--UU>> command.   If  this
     is the first <<ccoonnttrrooll--DD>> or <<ccoonnttrrooll--UU>> command, scroll
     backward half the number of lines in the  screen.   (In
     the  case  of split screens, the default scrolling dis-
     tance is corrected to half the  current  screen  size.)
     It is an error if the movement is past the beginning of
     the file.

     Line:    Set to  the  current  line  minus  the  amount
              scrolled.
     Column:  Set  to  the  first  nonblank character in the
              line.
     Options: None.

<<ccoonnttrrooll--WW>>
     Switch to the next lower screen in the window,  or,  to
     the  first  screen if there are no lower screens in the
     window.

     Line:    Set to the previous  cursor  position  in  the
              window.
     Column:  Set  to  the  previous  cursor position in the
              window.
     Options: None.

[[ccoouunntt]] <<ccoonnttrrooll--YY>>
     Scroll backward count lines, leaving the  current  line
     and  column  as is, if possible.  It is an error if the
     movement is past the beginning of the file.

     Line:    Unchanged unless the current line scrolls  off
              the  screen,  in  which  case it is set to the
              last line of text displayed on the screen.











UUSSDD::1133--3300                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Column:  Unchanged unless the current line scrolls  off
              the  screen,  in which case it is the most at-
              tractive cursor position.
     Options: None.

<<ccoonnttrrooll--ZZ>>
     Suspend the current editor session.  If  the  file  has
     been modified since it was last completely written, and
     the aauuttoowwrriittee option is set, the file is written before
     the  editor session is suspended.  If this write fails,
     the editor session is not suspended.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: Affected by the aauuttoowwrriittee option.

<<eessccaappee>>
     Execute eexx commands or cancel partial commands.  If  an
     eexx  command  is being entered (e.g.  //, ??, :: or !!), the
     command is executed.  If a partial command has been en-
     tered, e.g.  "[0-9]*", or "[0-9]*[!<>cdy]", the command
     is cancelled.  Otherwise, it is an error.

     Line:    When an eexx command is being executed, the cur-
              rent  line  is  set as described for that com-
              mand.  Otherwise, unchanged.
     Column:  When an eexx command is being executed, the cur-
              rent  column is set as described for that com-
              mand.  Otherwise, unchanged.
     Options: None.

<<ccoonnttrrooll--]]>>
     Push a tag reference onto  the  tag  stack.   The  tags
     files  (see  the  ttaaggss option for more information) are
     searched for a tag matching the current word.  The cur-
     rent  word begins at the first non-whitespace character
     on or after the current cursor position, and extends up
     to  the next non-word character or the end of the line.
     If a matching tag is found, the current  file  is  dis-
     carded  and  the  file  containing the tag reference is
     edited.

     If the current file has been modified since it was last
     completely  written,  the command will fail.  The <<ccoonn--
     ttrrooll--]]>> command is an absolute movement.

     Line:    Set to the line containing  the  matching  tag
              string.
     Column:  Set to the start of the matching tag string.
     Options: Affected by the ttaaggss and ttaagglleennggtthh options.

<<ccoonnttrrooll--^^>>
     Switch to the most recently edited file.










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--3311


     If  the  file  has been modified since it was last com-
     pletely written, and the aauuttoowwrriittee option is  set,  the
     file  is written out.  If this write fails, the command
     will fail.  Otherwise, if the  current  file  has  been
     modified since it was last completely written, the com-
     mand will fail.

     Line:    Set to the line the cursor  was  on  when  the
              file was last edited.
     Column:  Set  to  the column the cursor was on when the
              file was last edited.
     Options: Affected by the aauuttoowwrriittee option.

[[ccoouunntt]] <<ssppaaccee>>
[[ccoouunntt]] ll
     Move the cursor forward count characters without chang-
     ing  the current line.  It is an error if the cursor is
     on the last character in the line.

     The <<ssppaaccee>> and ll commands may be used  as  the  motion
     component  of other vvii commands, in which case any text
     copied into a buffer is character oriented.   In  addi-
     tion,  these  commands may be used as the motion compo-
     nents of other commands when the cursor is on the  last
     character in the line, without error.

     Line:    Unchanged.
     Column:  Set  to  the  current  character plus the next
              count characters, or to the last character  on
              the  line  if count is greater than the number
              of characters in the line  after  the  current
              character.
     Options: None.

[[ccoouunntt]] !! mmoottiioonn sshheellll--aarrgguummeenntt((ss))<<ccaarrrriiaaggee--rreettuurrnn>>
     Replace  text  with results from a shell command.  Pass
     the lines specified by the count and  motion  arguments
     as standard input to the program named by the sshheellll op-
     tion, and replace those lines  with  the  output  (both
     standard error and standard output) of that command.

     After  the  motion is entered, vvii prompts for arguments
     to the shell command.

     Within those arguments, "%" and "#" characters are  ex-
     panded  to the current and alternate pathnames, respec-
     tively.  The "!"  character is expanded with  the  com-
     mand  text of the previous !!  or ::!!  commands.  (There-
     fore, the command !!<<mmoottiioonn>>!!  repeats  the  previous  !!
     command.)   The  special  meanings  of "%", "#" and "!"
     can be overridden by escaping them  with  a  backslash.
     If no !!  or ::!!  command has yet been executed, it is an
     error to use an unescaped "!"  character as a shell ar-










UUSSDD::1133--3322                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     gument.   The !!  command does _n_o_t do shell expansion on
     the strings provided as arguments.  If any of the above
     expansions  change  the arguments the user entered, the
     command is redisplayed at the bottom of the screen.

     VVii then executes the program named by the sshheellll option,
     with  a  --cc  flag  followed by the arguments (which are
     bundled into a single argument).

     The !!  command is permitted in an empty file.

     If the file has been modified since it  was  last  com-
     pletely written, the !!  command will warn you.

     Line:    The first line of the replaced text.
     Column:  The first column of the replaced text.
     Options: Affected by the sshheellll option.

[[ccoouunntt]] ## ##||++||--
     Increment  or  decrement  the  number referenced by the
     cursor.  If the trailing character is a  +  or  #,  the
     number  is incremented by count.  If the trailing char-
     acter is a -, the number is decremented by count.

     A leading "0X" or "0x" causes the number to  be  inter-
     preted  as  a hexadecimal number.  Otherwise, a leading
     "0" causes the number to be  interpreted  as  an  octal
     number,  unless  a  non-octal digit is found as part of
     the number.  Otherwise, the number is interpreted as  a
     decimal  number,  and  may  have a leading + or - sign.
     The current number begins at the first non-blank  char-
     acter  at or after the current cursor position, and ex-
     tends up to the end of the line or the first  character
     that  isn't  a possible character for the numeric type.
     The format of the number (e.g. leading 0's,  signs)  is
     retained  unless the new value cannot be represented in
     the previous format.

     Octal and hexadecimal numbers, and the  result  of  the
     operation,  must fit into an "unsigned long".  Similar-
     ly, decimal numbers and their result must  fit  into  a
     "signed long".  It is an error to use this command when
     the cursor is not positioned at a number.


     Line:    Unchanged.
     Column:  Set to the first character in the cursor  num-
              ber.
     Options: None.

[[ccoouunntt]] $$
     Move  the  cursor  to  the  end of a line.  If count is
     specified, the cursor moves down count - 1 lines.










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--3333


     It is not an error to use the $$ command when the cursor
     is  on  the last character in the line or when the line
     is empty.

     The $$ command may be used as the  motion  component  of
     other vvii commands, in which case any text copied into a
     buffer is character oriented, unless the cursor is  at,
     or  before the first nonblank character in the line, in
     which case it is line oriented.  It is not an error  to
     use the $$ command as a motion component when the cursor
     is on the last character in the line, although it is an
     error when the line is empty.

     Line:    Set to the current line plus count minus 1.
     Column:  Set to the last character in the line.
     Options: None.

%%
     Move  to  the  matching character.  The cursor moves to
     the bracket character that _m_a_t_c_h_e_s the bracket found at
     the current cursor position or which is the closest one
     to the right of the cursor on the  line.   The  bracket
     characters  are  defined  by the mmaattcchhcchhaarrss option.  An
     error will be reported if none of the mmaattcchhcchhaarrss  char-
     acters  is found, or if no matching character is found.
     If the open and close brackes are identical  (e.g.:  if
     they  are  "'" or " )," then repeating a %% command will
     perform a backwards search from  the  original  opening
     bracket.   Historically,  any  count specified to the %%
     command was ignored.

     The %% command is an absolute movement.  The  %%  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     character  oriented,  unless  the starting point of the
     region is at or before the first nonblank character  on
     its  line, and the ending point is at or after the last
     nonblank character on its line, in  which  case  it  is
     line oriented.

     Line:    Set  to the line containing the matching char-
              acter.
     Column:  Set to the matching character.
     Options: None.

&&
     Repeat the previous substitution command on the current
     line.

     Historically,  any count specified to the && command was
     ignored.












UUSSDD::1133--3344                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Line:    Unchanged.
     Column:  Unchanged if the cursor was on the last  char-
              acter in the line, otherwise, set to the first
              nonblank character in the line.
     Options: Affected by the  eeddccoommppaattiibbllee,  eexxtteennddeedd,  iigg--
              nnoorreeccaassee and mmaaggiicc options.

''<<cchhaarraacctteerr>>
``<<cchhaarraacctteerr>>
     Return  to  a  context marked by the character <charac-
     ter>.  If <character> is the "'" or "`" character,  re-
     turn  to  the  previous context.  If <character> is any
     other character, return to the context marked  by  that
     character (see the mm command for more information).  If
     the command is the '' command, only the  line  value  is
     restored,  and  the  cursor is placed on the first non-
     blank character of that line.  If the command is the  ``
     command,  both the line and column values are restored.

     It is an error if the context no longer exists  because
     of  line  deletion.   (Contexts  follow  lines that are
     moved, or which are deleted and then restored.)

     The '' and `` commands are both absolute movements.  They
     may  be  used  as  a motion component for other vvii com-
     mands.  For the ''  command,  any  text  copied  into  a
     buffer  is  line oriented.  For the `` command, any text
     copied into a buffer is character oriented,  unless  it
     both  starts  and  stops  at the first character in the
     line, in which case it is line oriented.  In  addition,
     when  using  the  `` command as a motion component, com-
     mands which move backward  and  started  at  the  first
     character in the line, or move forward and ended at the
     first character in the line, are corrected to the  last
     character of the line preceding the starting and ending
     lines, respectively.

     Line:    Set to the line from the context.
     Column:  Set to the first  nonblank  character  in  the
              line,  for  the '' command, and set to the con-
              text's column for the `` command.
     Options: None.

[[ccoouunntt]] ((
     Back up count sentences.

     The (( command is an absolute movement.  The  ((  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     character  oriented,  unless  the starting and stopping
     points of the region are the  first  character  in  the
     line, in which case it is line oriented.  If it is line
     oriented, the starting point of the region is  adjusted










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--3355


     to be the end of the line immediately before the start-
     ing cursor position.

     Line:    Set to the line containing  the  beginning  of
              the sentence.
     Column:  Set  to  the  first  nonblank character of the
              sentence.
     Options: Affected by the lliisspp option.

[[ccoouunntt]] ))
     Move forward count sentences.

     The )) command is an absolute movement.  The  ))  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     character  oriented,  unless  the starting point of the
     region is the first character in  the  line,  in  which
     case  it  is line oriented.  In the latter case, if the
     stopping point of the region is also the first  charac-
     ter  in  the  line, it is adjusted to be the end of the
     line immediately before it.

     Line:    Set to the line containing  the  beginning  of
              the sentence.
     Column:  Set  to  the  first  nonblank character of the
              sentence.
     Options: Affected by the lliisspp option.

[[ccoouunntt]] ,,
     Reverse find character count times.  Reverse  the  last
     FF,  ff,  TT  or tt command, searching the other way in the
     line, count times.  It is an error if a FF, ff,  TT  or  tt
     command has not been performed yet.

     The  ,,  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set  to  the  searched-for character for the FF
              and ff commands, before the character for the tt
              command and after the character for the TT com-
              mand.
     Options: None.

[[ccoouunntt]] --
     Move to the first nonblank of the previous line,  count
     times.

     It is an error if the movement is past the beginning of
     the file.

     The -- command may be used as the  motion  component  of










UUSSDD::1133--3366                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     other vvii commands, in which case any text copied into a
     buffer is line oriented.

     Line:    Set to the current line minus count.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: None.

[[ccoouunntt]] ..
     Repeat the last vvii command that modified text.  The re-
     peated command may be a command  and  motion  component
     combination.   If  count is specified, it replaces _b_o_t_h
     the count specified for the repeated command,  and,  if
     applicable,  for  the  repeated  motion  component.  If
     count is not specified, the counts originally specified
     to the command being repeated are used again.

     As  a special case, if the ..  command is executed imme-
     diately after the uu command, the change log  is  rolled
     forward  or  backward, depending on the action of the uu
     command.

     Line:    Set as described for the repeated command.
     Column:  Set as described for the repeated command.
     Options: None.

//RREE<<ccaarrrriiaaggee--rreettuurrnn>>
//RREE// [[ooffffsseett]]<<ccaarrrriiaaggee--rreettuurrnn>>
??RREE<<ccaarrrriiaaggee--rreettuurrnn>>
??RREE?? [[ooffffsseett]]<<ccaarrrriiaaggee--rreettuurrnn>>
NN
nn
     Search forward or backward for  a  regular  expression.
     The commands beginning with a slash ("/") character are
     forward searches, the commands beginning with  a  ques-
     tion  mark  ("?")   are  backward searches.  VVii prompts
     with the leading character on  the  last  line  of  the
     screen for a string.  It then searches forward or back-
     ward in the file for the next occurrence of the string,
     which is interpreted as a Basic Regular Expression.

     The // and ??  commands are absolute movements.  They may
     be used as the motion components of other vvii  commands,
     in  which case any text copied into a buffer is charac-
     ter oriented, unless the search started  and  ended  on
     the  first  column  of a line, in which case it is line
     oriented.  In addition, forward searches ending at  the
     first character of a line, and backward searches begin-
     ning at the first character in the line, are  corrected
     to  begin  or end at the last character of the previous
     line.  (Note, forward and backward searches  can  occur
     for  both  // and ??  commands, if the wwrraappssccaann option is
     set.)










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--3377


     If an offset from the matched line is specified (i.e. a
     trailing  "/" or "?"  character is followed by a signed
     offset), the buffer will always be line oriented  (e.g.
     "/string/+0" will always guarantee a line orientation).

     The NN command repeats the previous search, but  in  the
     reverse  direction.  The nn command repeats the previous
     search.  If either the NN or nn commands are used as  mo-
     tion  components  for  the  !!  command, you will not be
     prompted for the text of the bang command, instead  the
     previous bang command will be executed.

     Missing RE's (e.g.  "//<carriage-return>", "/<carriage-
     return>",  "??<carriage-return>",  or   "?<carriage-re-
     turn>"  search for the last search RE, in the indicated
     direction.

     Searches may be interrupted using the <interrupt> char-
     acter.

     Multiple search patterns may be grouped together by de-
     limiting them with semicolons and zero or  more  white-
     space characters, e.g.  /foo/ ; ?bar?  searches forward
     for foo and then, from  that  location,  backwards  for
     bar.  When search patterns are grouped together in this
     manner, the search patterns are evaluated left to right
     with  the  final cursor position determined by the last
     search pattern.

     It is also permissible to append a  zz  command  to  the
     search  strings,  e.g.   /foo/ z.  searches forward for
     the next occurrence of foo,  and  then  positions  that
     line in the middle of screen.

     Line:    Set to the line in which the match occurred.
     Column:  Set  to  the  first  character  of the matched
              string.
     Options: Affected by the  eeddccoommppaattiibbllee,  eexxtteennddeedd,  iigg--
              nnoorreeccaassee, mmaaggiicc, and wwrraappssccaann options.

00
     Move to the first character in the current line.  It is
     not an error to use the 00 command when the cursor is on
     the first character in the line,

     The  00  command  may be used as the motion component of
     other vvii commands, in which case it is an error if  the
     cursor  is  on the first character in the line, and any
     text copied into a buffer is character oriented.

     Line:    Unchanged.
     Column:  Set to the first character in the line.











UUSSDD::1133--3388                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Options: None.

::
     Execute an eexx command.  VVii prompts for an eexx command on
     the  last line of the screen, using a colon (":") char-
     acter.  The command is terminated  by  a  <carriage-re-
     turn>,  <newline>  or  <escape> character; all of these
     characters may be escaped  by  using  a  <literal-next>
     character.  The command is then executed.

     If  the eexx command writes to the screen, vvii will prompt
     the user for a <carriage-return> before continuing when
     the  eexx command finishes.  Large amounts of output from
     the eexx command will be paged for the user, and the user
     prompted for a <carriage-return> or <space> key to con-
     tinue.  In some cases, a quit (normally a  "q"  charac-
     ter)  or <interrupt> may be entered to interrupt the eexx
     command.

     When the eexx command finishes, and the user is  prompted
     to resume visual mode, it is also possible to enter an-
     other ":" character followed by another eexx command.

     Line:    The current line is set as described  for  the
              eexx command.
     Column:  The current column is set as described for the
              eexx command.
     Options: Affected as described for the eexx command.

[[ccoouunntt]] ;;
     Repeat the last character find count times.   The  last
     character find is one of the FF, ff, TT or tt commands.  It
     is an error if a FF, ff, TT or tt command has not been per-
     formed yet.

     The  ;;  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set  to  the  searched-for character for the FF
              and ff commands, before the character for the tt
              command and after the character for the TT com-
              mand.
     Options: None.

[[ccoouunntt]] << mmoottiioonn
[[ccoouunntt]] >> mmoottiioonn
     Shift lines left or right.  Shift the number  of  lines
     in  the  region  specified by the count and motion left
     (for the << command) or right (for the >> command) by the
     number  of  columns specified by the sshhiiffttwwiiddtthh option.
     Only whitespace characters are  deleted  when  shifting










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--3399


     left.   Once  the first character in the line no longer
     contains a whitespace character, the command will  suc-
     ceed, but the line will not be modified.

     Line:    Unchanged.
     Column:  Set  to  the  first  nonblank character in the
              line.
     Options: Affected by the sshhiiffttwwiiddtthh option.

@@ bbuuffffeerr
     Execute a named buffer.  Execute the named buffer as vvii
     commands.  The buffer may include eexx commands, too, but
     they must be expressed as a :: command.  If  the  buffer
     is  line  oriented,  <newline> characters are logically
     appended to each line of the buffer.  If the buffer  is
     character  oriented, <newline> characters are logically
     appended to all but the last line in the buffer.

     If the buffer name is "@", or "*", then the last buffer
     executed shall be used.  It is an error to specify "@@"
     or "@*" if there were no  previous  buffer  executions.
     The text of a buffer may contain a @@ command, and it is
     possible to create infinite loops in this manner.  (The
     <interrupt>  character  may  be  used  to interrupt the
     loop.)

     Line:    The current line is set as described  for  the
              command(s).
     Column:  The current column is set as described for the
              command(s).
     Options: None.

[[ccoouunntt]] AA
     Enter input mode, appending the text after the  end  of
     the line.  If count is specified, the text is repeated-
     ly input count - 1 more times after input mode is exit-
     ed.

     Line:    Set  to  the  last  line upon which characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy,  sshhoowwmmaattcchh,  ttttyywweerraassee  and wwrraappmmaarrggiinn op-
              tions.

[[ccoouunntt]] BB
     Move backward count bigwords.  Move the cursor backward
     to  the beginning of a bigword by repeating the follow-
     ing algorithm: if the current position is at the begin-
     ning of a bigword or the character at the current posi-
     tion cannot be part of a bigword,  move  to  the  first
     character of the preceding bigword.  Otherwise, move to
     the first character of the bigword at the current posi-










UUSSDD::1133--4400                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     tion.   If  no  preceding bigword exists on the current
     line, move to the first character of the  last  bigword
     on the first preceding line that contains a bigword.

     The  BB  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Set  to the line containing the word selected.
     Column:  Set to the first character of the word select-
              ed.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] CC
     Change  text  from  the current position to the end-of-
     line.  If count is specified, the input  text  replaces
     from  the  current  position  to  the end-of-line, plus
     count - 1 subsequent lines.

     Line:    Set to the last  line  upon  which  characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy, sshhoowwmmaattcchh, ttttyywweerraassee  and  wwrraappmmaarrggiinn  op-
              tions.

[[bbuuffffeerr]] DD
     Delete  text  from  the current position to the end-of-
     line.

     It is not an error to execute the DD command on an empty
     line.

     Line:    Unchanged.
     Column:  Set  to the character before the current char-
              acter, or, column 1 if the cursor was on  col-
              umn 1.
     Options: None.

[[ccoouunntt]] EE
     Move  forward  count  end-of-bigwords.  Move the cursor
     forward to the end of a bigword by repeating  the  fol-
     lowing algorithm: if the current position is the end of
     a bigword or the character at that position  cannot  be
     part  of  a  bigword, move to the last character of the
     following bigword.  Otherwise, move to the last charac-
     ter of the bigword at the current position.  If no suc-
     ceeding bigword exists on the current line, move to the
     last character of the first bigword on the next follow-
     ing line that contains a bigword.

     The EE command may be used as the  motion  component  of
     other vvii commands, in which case any text copied into a










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--4411


     buffer is character oriented.

     Line:    Set to the line containing the word  selected.
     Column:  Set  to the last character of the word select-
              ed.
     Options: None.

[[ccoouunntt]] FF <<cchhaarraacctteerr>>
     Search count times backward through  the  current  line
     for <character>.

     The  FF  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set to the searched-for character.
     Options: None.

[[ccoouunntt]] GG
     Move  to  line  count,  or the last line of the file if
     count not specified.

     The GG command is an absolute movement.  The  GG  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     line oriented.

     Line:    Set  to  count,  if  specified, otherwise, the
              last line.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: None.

[[ccoouunntt]] HH
     Move  to  the screen line count - 1 lines below the top
     of the screen.

     The HH command is an absolute movement.  The  HH  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     line oriented.

     Line:    Set  to the line count - 1 lines below the top
              of the screen.
     Column:  Set to the first  nonblank  character  of  the
              _s_c_r_e_e_n line.
     Options: None.

[[ccoouunntt]] II
     Enter  input  mode, inserting the text at the beginning
     of the line.  If count is specified, the text input  is
     repeatedly input count - 1 more times.










UUSSDD::1133--4422                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Line:    Set  to  the  last  line upon which characters
              were entered.
     Column:  Set to the last character entered.
     Options: None.

[[ccoouunntt]] JJ
     Join lines.  If count is  specified,  count  lines  are
     joined;  a  minimum of two lines are always joined, re-
     gardless of the value of count.

     If the current line ends with a  whitespace  character,
     all  whitespace is stripped from the next line.  Other-
     wise, if the next line starts with a  open  parenthesis
     ("(")  do nothing.  Otherwise, if the current line ends
     with a question mark ("?"), period (".")   or  exclama-
     tion point ("!"), insert two spaces.  Otherwise, insert
     a single space.

     It is not an error to join lines past the  end  of  the
     file, i.e. lines that do not exist.

     Line:    Unchanged.
     Column:  Set  to the character after the last character
              of the next-to-last joined line.
     Options: None.

[[ccoouunntt]] LL
     Move to the screen line count - 1 lines above the  bot-
     tom of the screen.

     The  LL  command is an absolute movement.  The LL command
     may be used as the motion component of  other  vvii  com-
     mands,  in  which case any text copied into a buffer is
     line oriented.

     Line:    Set to the line count - 1 lines above the bot-
              tom of the screen.
     Column:  Set  to  the  first  nonblank character of the
              _s_c_r_e_e_n line.
     Options: None.

 MM
     Move to the screen line in the middle of the screen.

     The MM command is an absolute movement.  The  MM  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     line oriented.

     Historically,  any count specified to the MM command was
     ignored.












VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--4433


     Line:    Set to the line in the middle of the screen.
     Column:  Set to the first  nonblank  character  of  the
              _s_c_r_e_e_n line.
     Options: None.

[[ccoouunntt]] OO
     Enter  input  mode,  appending text in a new line above
     the current line.  If count is specified, the text  in-
     put is repeatedly input count - 1 more times.

     Historically,  any count specified to the OO command was
     ignored.

     Line:    Set to the last  line  upon  which  characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy, sshhoowwmmaattcchh, ttttyywweerraassee  and  wwrraappmmaarrggiinn  op-
              tions.

[[bbuuffffeerr]] PP
     Insert  text  from a buffer.  Text from the buffer (the
     unnamed buffer by default) is inserted before the  cur-
     rent  column or, if the buffer is line oriented, before
     the current line.

     Line:    Set to the lowest numbered line insert, if the
              buffer  is line oriented, otherwise unchanged.
     Column:  Set to the first nonblank character of the ap-
              pended  text,  if the buffer is line oriented,
              otherwise, the last character of the  appended
              text.
     Options: None.

QQ
     Exit vvii (or visual) mode and switch to eexx mode.

     Line:    Unchanged.
     Column:  No longer relevant.
     Options: None.

[[ccoouunntt]] RR
     Enter  input mode, replacing the characters in the cur-
     rent line.  If count is specified, the  text  input  is
     repeatedly input count - 1 more times.

     If  the  end  of  the  current line is reached, no more
     characters are replaced and any further characters  in-
     put are appended to the line.

     Line:    Set  to  the  last  line upon which characters
              were entered.











UUSSDD::1133--4444                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy,  sshhoowwmmaattcchh,  ttttyywweerraassee  and wwrraappmmaarrggiinn op-
              tions.

[[bbuuffffeerr]] [[ccoouunntt]] SS
     Substitute count lines.

     Line:    Set to the last  line  upon  which  characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy, sshhoowwmmaattcchh, ttttyywweerraassee  and  wwrraappmmaarrggiinn  op-
              tions.

[[ccoouunntt]] TT <<cchhaarraacctteerr>>
     Search  backward, count times, through the current line
     for the character _a_f_t_e_r the specified <character>.

     The TT command may be used as the  motion  component  of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set to the character  _a_f_t_e_r  the  searched-for
              character.
     Options: None.

UU
     Restore the current line to its state before the cursor
     last moved to it.

     Line:    Unchanged.
     Column:  The first character in the line.
     Options: None.

[[ccoouunntt]] WW
     Move forward count bigwords.  Move the  cursor  forward
     to  the beginning of a bigword by repeating the follow-
     ing algorithm: if the current position is within a big-
     word  or  the character at that position cannot be part
     of a bigword, move to the first character of  the  next
     bigword.   If  no subsequent bigword exists on the cur-
     rent line, move to the first  character  of  the  first
     bigword  on  the  first  following line that contains a
     bigword.

     The WW command may be used as the  motion  component  of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    The line containing the word selected.











VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--4455


     Column:  The first character of the word selected.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] XX
     Delete count characters before the cursor.  If the num-
     ber  of  characters  to  be  deleted is greater than or
     equal to the number of characters to the  beginning  of
     the line, all of the characters before the current cur-
     sor position, to the beginning of the line, are  delet-
     ed.

     Line:    Unchanged.
     Column:  Set  to  the current character minus count, or
              the first character if count is  greater  than
              the  number  of  characters in the line before
              the cursor.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] YY
     Copy (or "yank") count lines into the specified buffer.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: None.

ZZZZ
     Write  the  file and exit vvii.  The file is only written
     if it has been modified since the last  complete  write
     of the file to any file.

     The  ZZZZ  command will exit the editor after writing the
     file, if there are no further files to edit.   Entering
     two  "quit"  commands  (i.e.  wwqq, qquuiitt, xxiitt or ZZZZ) in a
     row will override this check and the editor will  exit,
     ignoring any files that have not yet been edited.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: None.

[[ccoouunntt]] [[[[
     Back up count section boundaries.

     The [[[[ command is an absolute movement.  The [[[[ command
     may be used as the motion component of  other  vvii  com-
     mands,  in  which case any text copied into a buffer is
     character oriented, unless  the  starting  position  is
     column 0, in which case it is line oriented.

     It is an error if the movement is past the beginning of
     the file.












UUSSDD::1133--4466                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Line:    Set to the previous line that is count section
              boundaries back, or the first line of the file
              if no more section boundaries exist  preceding
              the current line.
     Column:  Set  to  the  first  nonblank character in the
              line.
     Options: Affected by the sseeccttiioonnss option.

[[ccoouunntt]] ]]]]
     Move forward count section boundaries.

     The ]]]] command is an absolute movement.  The ]]]] command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     character  oriented,  unless  the  starting position is
     column 0, in which case it is line oriented.

     It is an error if the movement is past the end  of  the
     file.

     Line:    Set  to  the line that is count section bound-
              aries forward, or to the last line of the file
              if  no more section boundaries exist following
              the current line.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: Affected by the sseeccttiioonnss option.

^^
     Move to first nonblank character on the current line.

     The  ^^  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set  to  the  first  nonblank character of the
              current line.
     Options: None.

[[ccoouunntt]] __
     Move down count - 1 lines, to the first nonblank  char-
     acter.   The __ command may be used as the motion compo-
     nent of other vvii  commands,  in  which  case  any  text
     copied into a buffer is line oriented.

     It  is  not  an error to execute the __ command when the
     cursor is on the first character in the line.

     Line:    The current line plus count - 1.
     Column:  The first nonblank character in the line.
     Options: None.











VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--4477


[[ccoouunntt]] aa
     Enter input mode, appending the text after the  cursor.
     If count is specified, the text input is repeatedly in-
     put count - 1 more times.

     Line:    Set to the last  line  upon  which  characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy, sshhoowwmmaattcchh, ttttyywweerraassee  and  wwrraappmmaarrggiinn  op-
              tions.

[[ccoouunntt]] bb
     Move backward count words.  Move the cursor backward to
     the beginning of a word by repeating the following  al-
     gorithm: if the current position is at the beginning of
     a word, move to the first character  of  the  preceding
     word.   Otherwise,  the  current  position moves to the
     first character of the word at  the  current  position.
     If  no  preceding word exists on the current line, move
     to the first character of the last word  on  the  first
     preceding line that contains a word.

     The  bb  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Set  to the line containing the word selected.
     Column:  Set to the first character of the word select-
              ed.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] cc mmoottiioonn
     Change  the  region  of text specified by the count and
     motion.  If only part of a  single  line  is  affected,
     then  the last character being changed is marked with a
     "$".  Otherwise, the region of text is deleted, and in-
     put mode is entered.

     Line:    Set  to  the  last  line upon which characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy,  sshhoowwmmaattcchh,  ttttyywweerraassee  and wwrraappmmaarrggiinn op-
              tions.

[[bbuuffffeerr]] [[ccoouunntt]] dd mmoottiioonn
     Delete the region of text specified by  the  count  and
     motion.

     Line:    Set to the line where the region starts.
     Column:  Set  to  the first character in the line after
              the last character in the region.  If no  such










UUSSDD::1133--4488                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


              character  exists,  set  to the last character
              before the region.
     Options: None.

[[ccoouunntt]] ee
     Move forward count end-of-words.  Move the cursor  for-
     ward  to  the  end of a word by repeating the following
     algorithm: if the current position  is  the  end  of  a
     word, move to the last character of the following word.
     Otherwise, move to the last character of  the  word  at
     the  current position.  If no succeeding word exists on
     the current line, move to the  last  character  of  the
     first  word  on the next following line that contains a
     word.

     The ee command may be used as the  motion  component  of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Set to the line containing the word  selected.
     Column:  Set  to the last character of the word select-
              ed.
     Options: None.

[[ccoouunntt]] ff <<cchhaarraacctteerr>>
     Search forward, count times, through the  rest  of  the
     current line for <character>.

     The  ff  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set to the searched-for character.
     Options: None.

[[ccoouunntt]] ii
     Enter input mode, inserting the text before the cursor.
     If count is specified, the text input is repeatedly in-
     put count - 1 more times.

     Line:    Set  to  the  last  line upon which characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy,  sshhoowwmmaattcchh,  ttttyywweerraassee  and wwrraappmmaarrggiinn op-
              tions.

mm <<cchhaarraacctteerr>>
     Save the current context (line and column) as  <charac-
     ter>.   The exact position is referred to by "`<charac-
     ter>".  The line is referred to by "'<character>".











VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--4499


     Historically, <character> was restricted to  lower-case
     letters.  NNvvii permits the use of any character.

     Line:    Unchanged.
     Column:  Unchanged.
     Options: None.

[[ccoouunntt]] oo
     Enter  input  mode,  appending text in a new line under
     the current line.  If count is specified, the text  in-
     put is repeatedly input count - 1 more times.

     Historically,  any count specified to the oo command was
     ignored.

     Line:    Set to the last  line  upon  which  characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy, sshhoowwmmaattcchh, ttttyywweerraassee  and  wwrraappmmaarrggiinn  op-
              tions.

[[bbuuffffeerr]] pp
     Append  text  from a buffer.  Text from the buffer (the
     unnamed buffer by default) is appended after  the  cur-
     rent  column  or, if the buffer is line oriented, after
     the current line.

     Line:    Set to the first line appended, if the  buffer
              is line oriented, otherwise unchanged.
     Column:  Set to the first nonblank character of the ap-
              pended text if the buffer  is  line  oriented,
              otherwise,  the last character of the appended
              text.
     Options: None.

[[ccoouunntt]] rr <<cchhaarraacctteerr>>
     Replace characters.  The next count characters  in  the
     line  are replaced with <character>.  Replacing charac-
     ters with <newline> characters results in creating new,
     empty lines into the file.

     If <character> is <escape>, the command is cancelled.

     Line:    Unchanged  unless the replacement character is
              a <newline>, in which case it is  set  to  the
              current line plus count - 1.
     Column:  Set to the last character replaced, unless the
              replacement character is a <newline>, in which
              case  the  cursor  is  in column 1 of the last
              line inserted.
     Options: None.











UUSSDD::1133--5500                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


[[bbuuffffeerr]] [[ccoouunntt]] ss
     Substitute count characters in the current line  start-
     ing with the current character.

     Line:    Set  to  the  last  line upon which characters
              were entered.
     Column:  Set to the last character entered.
     Options: Affected by the aallttwweerraassee, aauuttooiinnddeenntt, bbeeaauuttii--
              ffyy,  sshhoowwmmaattcchh,  ttttyywweerraassee  and wwrraappmmaarrggiinn op-
              tions.

[[ccoouunntt]] tt <<cchhaarraacctteerr>>
     Search forward, count times, through the  current  line
     for the character immediately _b_e_f_o_r_e <character>.

     The  tt  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Unchanged.
     Column:  Set  to  the character _b_e_f_o_r_e the searched-for
              character.
     Options: None.

uu
     Undo the last change made to the  file.   If  repeated,
     the  uu command alternates between these two states, and
     is its own inverse.  When used after an insert that in-
     serted  text on more than one line, the lines are saved
     in the numeric buffers.

     The ..  command, when used immediately after the uu  com-
     mand,  causes  the  change  log to be rolled forward or
     backward, depending on the action of the uu command.

     Line:    Set to the position of the first line changed,
              if  the reversal affects only one line or rep-
              resents an addition or change; otherwise,  the
              line preceding the deleted text.
     Column:  Set  to  the cursor position before the change
              was made.
     Options: None.

[[ccoouunntt]] ww
     Move forward count words.  Move the cursor  forward  to
     the  beginning of a word by repeating the following al-
     gorithm: if the current position is at the beginning of
     a  word,  move to the first character of the next word.
     If no subsequent word exists on the current line,  move
     to  the  first character of the first word on the first
     following line that contains a word.

     The ww command may be used as the  motion  component  of










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--5511


     other vvii commands, in which case any text copied into a
     buffer is character oriented.

     Line:    Set to the line containing the word  selected.
     Column:  Set to the first character of the word select-
              ed.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] xx
     Delete count characters.  The deletion is at  the  cur-
     rent  character  position.  If the number of characters
     to be deleted is greater than or equal to the number of
     characters  to  the end of the line, all of the charac-
     ters from the current cursor position to the end of the
     line are deleted.

     Line:    Unchanged.
     Column:  Unchanged  unless  the  last  character in the
              line is deleted and the cursor is not  already
              on  the  first character in the line, in which
              case it is set to the previous character.
     Options: None.

[[bbuuffffeerr]] [[ccoouunntt]] yy mmoottiioonn
     Copy (or "yank") the text region specified by the count
     and motion, into a buffer.

     Line:    Unchanged,  unless the region covers more than
              a single line, in which case it is set to  the
              line where the region starts.
     Column:  Unchanged,  unless the region covers more than
              a single line, in which case it is set to  the
              character were the region starts.
     Options: None.

[[ccoouunntt11]] zz [[ccoouunntt22]] ttyyppee
     Redraw the screen with a window count2 lines long, with
     line count1 placed as specified by the type  character.
     If  count1 is not specified, it defaults to the current
     line.  If count2 is not specified, it defaults  to  the
     current window size.

     The following type characters may be used:

     +        If  count1 is specified, place the line count1
              at the top of the screen.  Otherwise,  display
              the screen after the current screen, similarly
              to the <<ccoonnttrrooll--FF>> command.
     <carriage-return>
              Place the  line  count1  at  the  top  of  the
              screen.
     .        Place  the  line  count1  in the center of the
              screen.










UUSSDD::1133--5522                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     -        Place the line count1 at  the  bottom  of  the
              screen.
     ^        If count1 is specified, place the line that is
              at the top of the screen when count1 is at the
              bottom  of  the  screen,  at the bottom of the
              screen, i.e. display  the  screen  before  the
              screen  before count1.  Otherwise, display the
              screen before the current screen, similarly to
              the <<ccoonnttrrooll--BB>> command.

     Line:    Set  to  count1 unless count1 is not specified
              and the type character was either "^" or  "+",
              in which case it is set to the line before the
              first line on the previous screen or the  line
              after  the  last  line on the previous screen,
              respectively.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: None.

[[ccoouunntt]] {{
     Move backward count paragraphs.

     The  {{  command is an absolute movement.  The {{ command
     may be used as the motion component of  other  vvii  com-
     mands,  in  which case any text copied into a buffer is
     character oriented, unless the  starting  character  is
     the  first  character  on its line, in which case it is
     line oriented.

     Line:    Set to the line containing  the  beginning  of
              the previous paragraph.
     Column:  Set  to  the  first  nonblank character in the
              line.
     Options: Affected by the ppaarraaggrraapphh option.

[[ccoouunntt]] ||
     Move to a specific _c_o_l_u_m_n position on the current line.

     The  ||  command  may be used as the motion component of
     other vvii commands, in which case any text copied into a
     buffer  is  character  oriented.  It is an error to use
     the || command as a motion component and for the  cursor
     not to move.

     Line:    Unchanged.
     Column:  Set  to the character occupying the column po-
              sition identified by count,  if  the  position
              exists  in  the line.  If the column length of
              the current line is less than count, the  cur-
              sor  is  moved  to  the  last character in the
              line.











VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--5533


     Options: None.

[[ccoouunntt]] }}
     Move forward count paragraphs.

     The }} command is an absolute movement.  The  }}  command
     may  be  used  as the motion component of other vvii com-
     mands, in which case any text copied into a  buffer  is
     character oriented, unless the starting character is at
     or before any nonblank characters in its line, in which
     case it is line oriented.

     Line:    Set  to  the  line containing the beginning of
              the next paragraph.
     Column:  Set to the first  nonblank  character  in  the
              line.
     Options: Affected by the ppaarraaggrraapphh option.

[[ccoouunntt]] ~~
     Reverse  the case of the next count character(s).  This
     is the historic semantic for the ~~ command  and  it  is
     only in effect if the ttiillddeeoopp option is not set.

     Lowercase  alphabetic  characters are changed to upper-
     case, and uppercase characters are  changed  to  lower-
     case.  No other characters are affected.

     Historically,  the ~~ command did not take an associated
     count, nor did it move past  the  end  of  the  current
     line.   As it had no associated motion it was difficult
     to change the case of large blocks of text.  In nnvvii, if
     the  cursor  is  on  the  last character of a line, and
     there are more lines in the file, the cursor  moves  to
     the next line.

     It  is  not an error to specify a count larger than the
     number of characters between the cursor and the end  of
     the file.

     Line:    Set  to  the line of the character after count
              characters, or, end of file.
     Column:  Set to the character after  count  characters,
              or, end-of-file.
     Options: Affected by the ttiillddeeoopp option.

[[ccoouunntt]] ~~ mmoottiioonn
     Reverse  the  case  of  the characters in a text region
     specified by the count and motion.  Only in  effect  if
     the ttiillddeeoopp option is set.

     Lowercase  characters are changed to uppercase, and up-
     percase characters are changed to lowercase.  No  other
     characters are affected.










UUSSDD::1133--5544                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     Line:    Set  to  the  line  of the character after the
              last character in the region.
     Column:  Set to the character after the last  character
              in the region.
     Options: Affected by the ttiillddeeoopp option.

<<iinntteerrrruupptt>>
     Interrupt  the  current  operation.  Many of the poten-
     tially long-running vvii commands may be interrupted  us-
     ing the terminal interrupt character.  These operations
     include searches, file reading and writing, filter  op-
     erations  and  map character expansion.  Interrupts are
     also enabled when running commands outside of vvii.

     If the <interrupt> character is used to interrupt while
     entering  an  eexx  command,  the command is aborted, the
     cursor returns to its previous position, and vvii remains
     in command mode.

     Generally,  if the <interrupt> character is used to in-
     terrupt any operation, any changes made before the  in-
     terrupt are left in place.

     Line:    Dependent  on the operation being interrupted.
     Column:  Dependent on the operation being  interrupted.
     Options: None.

     1144..  VVii TTeexxtt IInnppuutt CCoommmmaannddss

          The   following  section  describes  the  commands
     available in the text input mode of the vvii editor.

          Historically, vvii  implementations  only  permitted
     the  characters  inserted  on  the  current  line to be
     erased.  In addition, only the <control-D> erase  char-
     acter  and  the "0<control-D>" and "^<control-D>" erase
     strings could erase autoindent characters.  (Autoindent
     characters  include  both the characters inserted auto-
     matically at the beginning of an input line as well  as
     characters  inserted  using  the  <control-T> command.)
     This implementation permits erasure  to  continue  past
     the  beginning  of  the current line, and back to where
     text input mode was entered.  In  addition,  autoindent
     characters may be erased using the standard erase char-
     acters.  For the line and word erase characters, reach-
     ing  the autoindent characters forms a "soft" boundary,
     denoting the end of the current  word  or  line  erase.
     Repeating the word or line erase key will erase the au-
     toindent characters.

          Historically, vvii always used <control-H> and <con-
     trol-W> as character and word erase characters, respec-
     tively, regardless of the  current  terminal  settings.










VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))                      UUSSDD::1133--5555


     This  implementation  accepts, in addition to these two
     characters, the current terminal characters  for  those
     operations.

     <<nnuull>>
          If  the  first  character of the input is a <nul>,
          the previous input is replayed,  as  if  just  en-
          tered.

     <<ccoonnttrrooll--DD>>
          If  the  previous character on the line was an au-
          toindent character, erase characters to  move  the
          cursor  back  to  the column immediately after the
          previous (1-based) column which is a  multiple  of
          the  sshhiiffttwwiiddtthh  edit  option.  This may result in
          any number of <tab> and <space> characters preced-
          ing the cursor being changed.

          Otherwise, if the aauuttooiinnddeenntt option is set and the
          user is entering the first character in the  line,
          <control-D>  is  ignored.   Otherwise,  a  literal
          <control-D> character is entered.

     ^^<<ccoonnttrrooll--DD>>
          If the previous character on the line was  an  au-
          toindent  character,  erase  all of the autoindent
          characters on the line.  In addition, the  autoin-
          dent level is reset to 0.

     00<<ccoonnttrrooll--DD>>
          If  the  previous character on the line was an au-
          toindent character, erase all  of  the  autoindent
          characters  on  the line.  The autoindent level is
          not altered.

     <<ccoonnttrrooll--TT>>
          Insert sufficient <tab> and <space> characters  to
          move  the cursor forward to the column immediately
          after the next (1-based) column which is a  multi-
          ple  of  the sshhiiffttwwiiddtthh edit option.  This may re-
          sult in any number of <tab> and <space> characters
          preceding the cursor being changed.

          Historically,  vvii  did  not permit the <control-T>
          command to be used unless the cursor  was  at  the
          first column of a new line or it was preceded only
          by autoindent characters.  NNvvii permits  it  to  be
          used at any time during insert mode.

     <<eerraassee>>
     <<ccoonnttrrooll--HH>>
          Erase the last character.











UUSSDD::1133--5566                      VVii//EExx RReeffeerreennccee ((VVii CCoommmmaannddss))


     <<lliitteerraall--nneexxtt>>
          Quote the next character.  The next character will
          not be mapped (see the mmaapp command for more infor-
          mation)  or  interpreted specially.  A carat ("^")
          character  will  be  displayed  immediately  as  a
          placeholder,  but  will  be  replaced  by the next
          character.

     <<eessccaappee>>
          If on the colon command line, and the  ffiilleecc  edit
          option  is  set,  behave as described for that op-
          tion.  Otherwise, if on the  colon  command  line,
          execute  the  command.   Otherwise,  if not on the
          colon command line, resolve all  text  input  into
          the file, and return to command mode.

     <<lliinnee eerraassee>>
          Erase the current line.

     <<ccoonnttrrooll--WW>>
     <<wwoorrdd eerraassee>>
          Erase  the  last  word.  The definition of word is
          dependent on the aallttwweerraassee and ttttyywweerraassee  options.

     <<ccoonnttrrooll--XX>>[[00--99AA--FFaa--ff]]++
          Insert  a character with the specified hexadecimal
          value into the text.  The value  is  delimited  by
          any  non-hexadecimal character or the input of the
          maximum number of characters that can be translat-
          ed into a single character value.

     <<iinntteerrrruupptt>>
          Interrupt  text  input  mode, returning to command
          mode.  If the <interrupt> character is used to in-
          terrupt  inserting text into the file, it is as if
          the <escape> character was used; all text input up
          to the interruption is resolved into the file.

     1155..  EExx AAddddrreessssiinngg

          Addressing in eexx (and when eexx commands are execut-
     ed from vvii) relates to the current line.   In  general,
     the  current  line  is the last line affected by a com-
     mand.  The exact effect on the  current  line  is  dis-
     cussed under the description of each command.  When the
     file contains no lines, the current line is zero.

          Addresses are constructed by one or  more  of  the
     following methods:

      (1)   The address "."  refers to the current line.












VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--5577


      (2)   The  address  "$" refers to the last line of the
            file.

      (3)   The address "N", where N is a  positive  number,
            refers to the N-th line of the file.

      (4)   The  address  "'<character>"  or  "`<character>"
            refers to the line marked with the name <charac-
            ter>.   (See the kk or mm commands for more infor-
            mation on how to mark lines.)

      (5)   A regular expression (RE)  enclosed  by  slashes
            ("/")  is an address, and it refers to the first
            line found by searching forward  from  the  line
            _a_f_t_e_r  the  current  line  toward the end of the
            file, and stopping at the first line  containing
            a  string  matching the RE.  (The trailing slash
            can be omitted at the end of the command  line.)

            If no RE is specified, i.e. the pattern is "//",
            the last RE used in any command is used  in  the
            search.

            If the eexxtteennddeedd option is set, the RE is handled
            as an extended RE, not a basic RE.  If the wwrraapp--
            ssccaann  option  is set, the search wraps around to
            the beginning of the file and  continues  up  to
            and  including the current line, so that the en-
            tire file is searched.

            The form "\/" is accepted for historic  reasons,
            and is identical to "//".

      (6)   An RE enclosed in question marks ("?")  address-
            es the first line found  by  searching  backward
            from the line _p_r_e_c_e_d_i_n_g the current line, toward
            the beginning of the file and  stopping  at  the
            first  line containing a string matching the RE.
            (The trailing question mark can  be  omitted  at
            the end of a command line.)

            If no RE is specified, i.e. the pattern is "??",
            the last RE used in any command is used  in  the
            search.

            If the eexxtteennddeedd option is set, the RE is handled
            as an extended RE, not a basic RE.  If the wwrraapp--
            ssccaann  option  is  set,  the search  wraps around
            from the beginning of the file to the end of the
            file  and continues up to and including the cur-
            rent line, so that the entire file is  searched.

            The form "\?"  is accepted for historic reasons,










UUSSDD::1133--5588                                    VVii//EExx RReeffeerreennccee


            and is identical to "??".

      (7)   An address followed by a plus sign  ("+")  or  a
            minus sign ("-") followed by a number is an off-
            set address and refers to the address  plus  (or
            minus)  the  indicated  number of lines.  If the
            address is omitted, the addition or  subtraction
            is done with respect to the current line.

      (8)   An address of "+" or "-" followed by a number is
            an offset from the current line.   For  example,
            "-5" is the same as ".-5".

      (9)   An address ending with "+" or "-" has 1 added to
            or subtracted from  the  address,  respectively.
            As  a consequence of this rule and of the previ-
            ous rule, the address "-"  refers  to  the  line
            preceding  the current line.  Moreover, trailing
            "+" and "-" characters have a cumulative effect.
            For  example, "++-++" refers to the current line
            plus 3.

      (10)  A percent sign ("%") is equivalent  to  the  ad-
            dress range "1,$".

          EExx  commands  require zero, one, or two addresses.
     It is an error to specify an address to a command which
     requires zero addresses.

          If the user provides more than the expected number
     of addresses to any eexx  command,  the  first  addresses
     specified  are  discarded.  For example, "1,2,3,5"print
     prints lines 3 through 5, because the pprriinntt command on-
     ly takes two addresses.

          The  addresses  in a range are separated from each
     other by a comma (",") or a semicolon  (";").   In  the
     latter  case,  the  current  line  (".")  is set to the
     first address, and only then is the second address cal-
     culated.   This  feature  can  be used to determine the
     starting line for forward and  backward  searches  (see
     rules  (5)  and  (6) above).  The second address of any
     two-address sequence corresponds to a  line  that  fol-
     lows,  in the file, the line corresponding to the first
     address.  The first address must be less than or  equal
     to  the  second  address.   The  first  address must be
     greater than or equal to the first line  of  the  file,
     and  the last address must be less than or equal to the
     last line of the file.














VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--5599


     1166..  EExx DDeessccrriippttiioonn

          The following words have special meanings  for  eexx
     commands.

     <<eenndd--ooff--ffiillee>>
          The  end-of-file  character  is used to scroll the
          screen in the eexx editor.  This character  is  nor-
          mally <control-D>.  However, whatever character is
          set for the current terminal is supported as  well
          as <control-D>.

     lliinnee
          A  single-line  address, given in any of the forms
          described in the section entitled "EExx AAddddrreessssiinngg".
          The default for line is the current line.

     rraannggee
          A  line, or a pair of line addresses, separated by
          a comma or semicolon.  (See the  section  entitled
          "EExx  AAddddrreessssiinngg"  for  more information.)  The de-
          fault for range is the  current  line  _o_n_l_y,  i.e.
          ".,.".   A percent sign ("%") stands for the range
          "1,$".  The starting address must be less than, or
          equal to, the ending address.

     ccoouunntt
          A positive integer, specifying the number of lines
          to be affected by the command; the default  is  1.
          Generally,  a  count  past  the end-of-file may be
          specified, e.g. the command "p 3000" in a 10  line
          file  is  acceptable, and will print from the cur-
          rent line through the last line in the file.

     ffllaaggss
          One or more of the characters "#", "p",  and  "l".
          When a command that accepts these flags completes,
          the addressed line(s) are written out as if by the
          corresponding  ##,  ll  or pp commands.  In addition,
          any number of "+" or "-" characters can be  speci-
          fied  before, after, or during the flags, in which
          case the line written is not necessarily  the  one
          affected  by  the command, but rather the line ad-
          dressed by the offset address specified.  The  de-
          fault for flags is none.

     ffiillee
          A  pattern  used to derive a pathname; the default
          is the current file.  File names are subjected  to
          normal _s_h(1) word expansions.

          Anywhere a file name is specified, it is also pos-
     sible to use the special string "/tmp".  This  will  be










UUSSDD::1133--6600                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


     replaced  with  a temporary file name which can be used
     for temporary work, e.g.  ":e /tmp" creates and edits a
     new file.

          If both a count and a range are specified for com-
     mands that use either, the starting line for  the  com-
     mand  is  the  _l_a_s_t  line  addressed  by the range, and
     count- subsequent lines are affected  by  the  command,
     e.g.  the  command "2,3p4" prints out lines 3, 4, 5 and
     6.

          When only a line or range is  specified,  with  no
     command,  the  implied command is either a lliisstt, nnuummbbeerr
     or pprriinntt command.  The command used is the most  recent
     of  the three commands to have been used (including any
     use as a flag).  If none of these  commands  have  been
     used  before, the pprriinntt command is the implied command.
     When no range or count is  specified  and  the  command
     line  is  a blank line, the current line is incremented
     by 1 and then the current line is displayed.

          Zero or more whitespace characters may precede  or
     follow  the  addresses,  count, flags, or command name.
     Any object following a command name  (such  as  buffer,
     file,  etc.), that begins with an alphabetic character,
     should be separated from the command name by  at  least
     one whitespace character.

          Any  character,  including  <carriage-return>, "%"
     and "#" retain their literal value when preceded  by  a
     backslash.

     1177..  EExx CCoommmmaannddss

          The   following  section  describes  the  commands
     available in the eexx editor.  In each entry  below,  the
     tag line is a usage synopsis for the command.

          Each  command  can  be entered as the abbreviation
     (those characters in the synopsis command word  preced-
     ing  the  "[" character), the full command (all charac-
     ters shown for the command word, omitting the  "["  and
     "]" characters), or any leading subset of the full com-
     mand down to the abbreviation.  For example,  the  args
     command  (shown as "ar[gs]" in the synopsis) can be en-
     tered as "ar", "arg" or "args".

          Each eexx command described below notes the new cur-
     rent  line after it is executed, as well as any options
     that affect the command.

     ""
          A comment.  Command lines beginning with the  dou-










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--6611


          ble-quote  character (""") are ignored.  This per-
          mits comments in editor scripts and startup files.

     <<ccoonnttrrooll--DD>>

     <<eenndd--ooff--ffiillee>>
          Scroll  the screen.  Write the next N lines, where
          N is the value of the ssccrroollll option.  The  command
          is  the  end-of-file terminal character, which may
          be different on different terminals.  Traditional-
          ly, it is the <control-D> key.

          Historically,  the eeooff command ignored any preced-
          ing count, and the <end-of-file> character was ig-
          nored unless it was entered as the first character
          of the command.  This implementation treats it  as
          a  command  _o_n_l_y if entered as the first character
          of the command line, and otherwise  treats  it  as
          any other character.

          Line:    Set to the last line written.
          Options: Affected by the ssccrroollll option.

     !! aarrgguummeenntt((ss))
     [[rraannggee]]!! aarrgguummeenntt((ss))
          Execute a shell command, or filter lines through a
          shell command.  In the first synopsis, the remain-
          der of the line after the "!"  character is passed
          to the program named by the  sshheellll  option,  as  a
          single argument.

          Within  the  rest of the line, "%" and "#" are ex-
          panded into the current and  alternate  pathnames,
          respectively.  The character "!"  is expanded with
          the command  text  of  the  previous  !!   command.
          (Therefore, the command !!!!  repeats the previous !!
          command.)  The special meanings of "%",  "#",  and
          "!"   can  be  overridden  by escaping them with a
          backslash.  If no !!  or ::!!  command has  yet  been
          executed,  it  is an error to use an unescaped "!"
          character.  The !!  command does _n_o_t do  shell  ex-
          pansion  on the strings provided as arguments.  If
          any of the above expansions change the command the
          user  entered,  the  command is redisplayed at the
          bottom of the screen.

          EExx then executes the program named  by  the  sshheellll
          option,  with  a --cc flag followed by the arguments
          (which are bundled into a single argument).

          The !!  command is permitted in an empty file.

          If the file has been modified since  it  was  last










UUSSDD::1133--6622                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          completely written, the command will warn you.

          A single "!"  character is displayed when the com-
          mand completes.

          In the second form of the !!  command, the  remain-
          der  of  the  line after the "!"  is passed to the
          program named by the sshheellll  option,  as  described
          above.  The specified lines are passed to the pro-
          gram as standard input, and the standard and stan-
          dard error output of the program replace the orig-
          inal lines.

          Line:    Unchanged if no range was specified, oth-
                   erwise  set  to  the  first  line  of the
                   range.
          Options: Affected by the sshheellll and wwaarrnn options.

     [[rraannggee]] ## [[ccoouunntt]] [[ffllaaggss]]
     [[rraannggee]] nnuu[[mmbbeerr]] [[ccoouunntt]] [[ffllaaggss]]
          Display the selected lines, each preceded with its
          line number.

          The  line  number format is "%6d", followed by two
          spaces.

          Line:    Set to the last line displayed.
          Options: Affected by the lliisstt option.

     @@ bbuuffffeerr
     ** bbuuffffeerr
          Execute a buffer.  Each line in the  named  buffer
          is  executed  as  an  eexx command.  If no buffer is
          specified, or if the specified buffer  is  "@"  or
          "*", the last buffer executed is used.

     [[rraannggee]] <<[[<< ......]] [[ccoouunntt]] [[ffllaaggss]]
          Shift  lines  left  or right.  The specified lines
          are shifted to the left (for  the  <<  command)  or
          right  (for  the >> command), by the number of col-
          umns specified by  the  sshhiiffttwwiiddtthh  option.   Only
          leading  whitespace  characters  are  deleted when
          shifting left; once the first column of  the  line
          contains  a  nonblank character, the sshhiifftt command
          will succeed, but the line will not be modified.

          If the command character << or >> is  repeated  more
          than  once,  the command is repeated once for each
          additional command character.

          Line:    If the current line is set to one of  the
                   lines  that  are affected by the command,
                   it is unchanged.  Otherwise, it is set to










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--6633


                   the  first nonblank character of the low-
                   est numbered line shifted.
          Options: Affected by the sshhiiffttwwiiddtthh option.

     [[lliinnee]] == [[ffllaaggss]]
          Display the line number of line (which defaults to
          the last line in the file).

          Line:    Unchanged.
          Options: None.

     [[rraannggee]] >>[[>> ......]] [[ccoouunntt]] [[ffllaaggss]]
          Shift  right.   The specified lines are shifted to
          the right by the number of  columns  specified  by
          the  sshhiiffttwwiiddtthh option, by inserting tab and space
          characters.  Empty lines are not changed.

          If the command character ">" is repeated more than
          once,  the command is repeated once for each addi-
          tional command character.

          Line:    Set to the last line modified by the com-
                   mand.
          Options: Affected by the sshhiiffttwwiiddtthh option.

     aabb[[bbrreevv]] llhhss rrhhss
          Add  an  abbreviation  to the current abbreviation
          list.  When inserting text in vvii, each time a non-
          word  character is entered after a word character,
          a set of characters ending at the  word  character
          are  checked  for a match with lhs.  If a match is
          found, they are replaced with  rhs.   The  set  of
          characters  that  are  checked for a match are de-
          fined as follows, for inexplicable historical rea-
          sons.   If only one or two characters were entered
          before the non-word character that  triggered  the
          check,  and  after the beginning of the insertion,
          or the beginning of the line or the file,  or  the
          last  <blank> character that was entered, then the
          one or the  both  characters  are  checked  for  a
          match.   Otherwise,  the set includes both charac-
          ters, as well as the characters that precede  them
          that  are  the  same word class (i.e. word or non-
          word) as the sseeccoonndd to last character entered  be-
          fore  the  non-word  character  that triggered the
          check, back to the first <blank>character, the be-
          ginning  of the insertion, or the beginning of the
          line or the file.

          For example, the abbreviations:













UUSSDD::1133--6644                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          :abbreviate   abc    ABC
          :abbreviate   #i     #include
          :abbreviate   /*#i   /*#include

          will all work, while the abbreviations:


          :abbreviate   a#i   A#include
          :abbreviate   /*    /********************

          will not work, and are not permitted by nnvvii.

          To keep the abbreviation expansion from happening,
          the  character immediately following the lhs char-
          acters should  be  quoted  with  a  <literal-next>
          character.

          The replacement rhs is itself subject to both fur-
          ther abbreviation expansion and further map expan-
          sion.

          Line:    Unchanged.
          Options: None.

     [[lliinnee]] aa[[ppppeenndd]][[!!]]
          The  input text is appended to the specified line.
          If line 0 is specified, the text  is  inserted  at
          the  beginning  of the file.  Set to the last line
          input.  If no lines are input, then set  to  line,
          or  to  the  first line of the file if a line of 0
          was specified.  Following the command name with  a
          "!"   character causes the aauuttooiinnddeenntt option to be
          toggled for the duration of the command.

          Line:    Unchanged.
          Options: Affected by the aauuttooiinnddeenntt and nnuummbbeerr op-
                   tions.

     aarr[[ggss]]
          Display  the  argument list.  The current argument
          is displayed inside of  "["  and  "]"  characters.
          The  argument  list is the list of operands speci-
          fied on startup, which can be replaced  using  the
          nneexxtt command.

          Line:    Unchanged.
          Options: None.

     bbgg
          VVii mode only.  Background the current screen.  The
          screen is unchanged, but is no  longer  accessible
          and  disappears from the display.  Use the ffgg com-











VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--6655


          mand to bring the screen back to the display fore-
          ground.

          Line:    Set  to  the current line when the screen
                   was last edited.
          Options: None.

     [[rraannggee]] cc[[hhaannggee]][[!!]] [[ccoouunntt]]
          Replace the lines with input text.  Following  the
          command  name with a "!"  character causes the aauu--
          ttooiinnddeenntt option to be toggled for the duration  of
          the command.

          Line:    Set  to  the  last  line input, or, if no
                   lines were input, set to the line  before
                   the  target line, or to the first line of
                   the file if there are no lines  preceding
                   the target line.
          Options: Affected by the aauuttooiinnddeenntt and nnuummbbeerr op-
                   tions.

     cchhdd[[iirr]][[!!]] [[ddiirreeccttoorryy]]
     ccdd[[!!]] [[ddiirreeccttoorryy]]
          Change the current working directory.  The  direc-
          tory  argument  is  subjected to _s_h(1) word expan-
          sions.  When invoked with  no  directory  argument
          and  the HOME environment variable is set, the di-
          rectory named by the HOME environment variable be-
          comes  the  new current directory.  Otherwise, the
          new current directory becomes  the  directory  re-
          turned by the _g_e_t_p_w_e_n_t(3) routine.

          The  cchhddiirr  command will fail if the file has been
          modified since the  last  complete  write  of  the
          file.   You can override this check by appending a
          "!"  character to the command.

          Line:    Unchanged.
          Options: Affected by the ccddppaatthh option.

     [[rraannggee]] ccoo[[ppyy]] lliinnee [[ffllaaggss]]
     [[rraannggee]] tt lliinnee [[ffllaaggss]]
          Copy the specified lines (range) after the  desti-
          nation  line.   Line  0 may be specified to insert
          the lines at the beginning of the file.

          Line:    Unchanged.
          Options: None.

     ccss[[ccooppee]] ccoommmmaanndd [[aarrggss]]
          Execute a ccssccooppee command.  For  more  information,
          see  the  section of the reference manual entitled
          "TTaaggss,, TTaagg SSttaacckkss,, aanndd CCssccooppee".










UUSSDD::1133--6666                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


     [[rraannggee]] dd[[eelleettee]] [[bbuuffffeerr]] [[ccoouunntt]] [[ffllaaggss]]
          Delete the lines from the file.  The deleted  text
          is saved in the specified buffer, or, if no buffer
          is specified, in the unnamed buffer.  If the  com-
          mand  name  is  followed by a letter that could be
          interpreted as either a buffer name or a flag val-
          ue  (because  neither a count or flags values were
          given), eexx treats the letter as a flags  value  if
          the  letter  immediately follows the command name,
          without any whitespace separation.  If the  letter
          is preceded by whitespace characters, it treats it
          as a buffer name.

          Line:    Set to the  line  following  the  deleted
                   lines, or to the last line if the deleted
                   lines were at the end.
          Options: None.

     ddii[[ssppllaayy]] bb[[uuffffeerrss]] || cc[[oonnnneeccttiioonnss]] || ss[[ccrreeeennss]] ||
          tt[[aaggss]]
          Display  buffers,  ccssccooppee  connections, screens or
          tags.  The ddiissppllaayy command takes one of three  ad-
          ditional arguments, which are as follows:

          b[uffers]
                   Display all buffers (including named, un-
                   named, and numeric) that contain text.
          c[onnections]
                   Display the source  directories  for  all
                   attached ccssccooppee databases.
          s[creens]
                   Display  the file names of all background
                   screens.
          t[ags]   Display the tags stack.

          Line:    Unchanged.
          Options: None.

     ee[[ddiitt]][[!!]] [[++ccmmdd]] [[ffiillee]]
     eexx[[!!]] [[++ccmmdd]] [[ffiillee]]
          Edit a different file.  If the current buffer  has
          been  modified  since the last complete write, the
          command will fail.  You can override this  by  ap-
          pending a "!"  character to the command name.

          If the "+cmd" option is specified, that eexx command
          will be executed in the new file.  Any eexx  command
          may  be used, although the most common use of this
          feature is to specify a line number or search pat-
          tern  to set the initial location in the new file.

          Capitalizing the first letter of the command, i.e.
          EEddiitt  or  EExx, while in vvii mode, will edit the file










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--6677


          in a new screen.  In this case, any  modifications
          to the current file are ignored.

          Line:    If  you  have previously edited the file,
                   the current line will be set to your last
                   position  in  the file.  If that position
                   does not exist, or you have not previous-
                   ly edited the file, the current line will
                   be set to the first line of the  file  if
                   you  are in vvii mode, and the last line of
                   the file if you are in eexx.
          Options: None.

     eexxuu[[ssaaggee]] [[ccoommmmaanndd]]
          Display usage for an eexx command.   If  command  is
          specified,  a  usage statement for that command is
          displayed.  Otherwise, usage statements for all eexx
          commands are displayed.

          Line:    Unchanged.
          Options: None.

     ff[[iillee]] [[ffiillee]]
          Display and optionally change the file name.  If a
          file name is specified, the  current  pathname  is
          changed  to the specified name.  The current path-
          name, the number of lines, and the  current  posi-
          tion in the file are displayed.

          Line:    Unchanged.
          Options: None.

     ffgg [[nnaammee]]
          VVii  mode  only.   Foreground the specified screen.
          If the argument name  doesn't  exactly  match  the
          name  of  a file displayed by a background screen,
          it is compared against the last component of  each
          of  the  file  names.   If no background screen is
          specified, the first background  screen  is  fore-
          grounded.

          By   default,  foregrounding  causes  the  current
          screen to be swapped with the backgrounded screen.
          Capitalizing the first letter of the command, i.e.
          FFgg, will foreground the backgrounded screen  in  a
          new screen instead of swapping it with the current
          screen.

          Line:    Set to the current line when  the  screen
                   was last edited.
          Options: None.












UUSSDD::1133--6688                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


     [[rraannggee]] gg[[lloobbaall]] //ppaatttteerrnn// [[ccoommmmaannddss]]
     [[rraannggee]] vv //ppaatttteerrnn// [[ccoommmmaannddss]]
          Apply commands to lines matching (or not matching)
          a pattern.  The lines within the given range  that
          match ("g[lobal]"), or do not match ("v") the giv-
          en pattern are selected.  Then, the  specified  eexx
          command(s)  are  executed  with  the  current line
          (".")  set to each selected line.  If no range  is
          specified,  the entire file is searched for match-
          ing, or not matching, lines.

          Multiple commands can be specified, one per  line,
          by  escaping each <newline> character with a back-
          slash, or by separating commands with a "|"  char-
          acter.   If no commands are specified, the command
          defaults to the pprriinntt command.

          For the aappppeenndd, cchhaannggee and  iinnsseerrtt  commands,  the
          input  text  must  be  part  of the global command
          line.  In this case, the terminating period can be
          omitted if it ends the commands.

          The vviissuuaall command may also be specified as one of
          the eexx commands.  In this  mode,  input  is  taken
          from  the  terminal.   Entering  a QQ command in vvii
          mode causes the next line matching the pattern  to
          be selected and vvii to be reentered, until the list
          is exhausted.

          The gglloobbaall, vv and uunnddoo commands cannot be used  as
          part of these commands.

          The  editor  options aauuttooiinnddeenntt, aauuttoopprriinntt and rree--
          ppoorrtt are turned off for the duration of the gglloobbaall
          and vv commands.

          Line:    The last line modified.
          Options: Affected  by the iiggnnoorreeccaassee and mmaaggiicc op-
                   tions.  Turns off the  aauuttooiinnddeenntt,  aauuttoo--
                   pprriinntt and rreeppoorrtt options.

     hhee[[llpp]]
          Display a help message.

          Line:    Unchanged.
          Options: None.

     [[lliinnee]] ii[[nnsseerrtt]][[!!]]
          The  input  text  is inserted before the specified
          line.  Following  the  command  name  with  a  "!"
          character  causes the aauuttooiinnddeenntt option setting to
          be toggled for the duration of this command.











VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--6699


          Line:    Set to the last line input; if  no  lines
                   were  input,  set  to the line before the
                   target line, or to the first line of  the
                   file  if there are no lines preceding the
                   target line.  Affected by the  aauuttooiinnddeenntt
                   and nnuummbbeerr options.

     [[rraannggee]] jj[[ooiinn]][[!!]] [[ccoouunntt]] [[ffllaaggss]]
          Join lines of text together.

          A  count  specified  to the command specifies that
          the last line of the range plus  count  subsequent
          lines  will be joined.  (Note, this differs by one
          from the general rule where only count- subsequent
          lines are affected.)

          If the current line ends with a whitespace charac-
          ter, all whitespace  is  stripped  from  the  next
          line.   Otherwise,  if the next line starts with a
          open parenthesis ("("), do nothing.  Otherwise, if
          the  current line ends with a question mark ("?"),
          period (".")  or exclamation point  ("!"),  insert
          two spaces.  Otherwise, insert a single space.

          Appending  a  "!"   character  to the command name
          causes a simpler join with no white-space process-
          ing.

          Line:    Unchanged.
          Options: None.

     [[rraannggee]] ll[[iisstt]] [[ccoouunntt]] [[ffllaaggss]]
          Display  the  lines  unambiguously.  Tabs are dis-
          played as "^I", and the end of the line is  marked
          with a "$" character.

          Line:    Set to the last line displayed.
          Options: Affected by the nnuummbbeerr option.

     mmaapp[[!!]] [[llhhss rrhhss]]
          Define or display maps (for vvii only).

          If  "lhs" and "rhs" are not specified, the current
          set of command mode maps are displayed.  If a  "!"
          character  is appended to to the command, the text
          input mode maps are displayed.

          Otherwise, when the "lhs"  character  sequence  is
          entered in vvii, the action is as if the correspond-
          ing "rhs" had been entered.  If a  "!"   character
          is  appended  to  the command name, the mapping is
          effective during text input mode, otherwise, it is
          effective  during command mode.  This allows "lhs"










UUSSDD::1133--7700                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          to have two different  macro  definitions  at  the
          same  time: one for command mode and one for input
          mode.

          Whitespace  characters  require  escaping  with  a
          <literal-next>  character to be entered in the lhs
          string in visual mode.

          Normally, keys in the rhs string are remapped (see
          the  rreemmaapp  option),  and it is possible to create
          infinite loops.  However, keys which map to  them-
          selves are not further remapped, regardless of the
          setting of the rreemmaapp  option.   For  example,  the
          command  ":map  n  nz."  maps the "n" key to the nn
          and zz commands.

          To exit an infinitely looping map, use the  termi-
          nal <interrupt> character.

          Line:    Unchanged.
          Options: Affected by the rreemmaapp option.

     [[lliinnee]] mmaa[[rrkk]] <<cchhaarraacctteerr>>
     [[lliinnee]] kk <<cchhaarraacctteerr>>
          Mark  the line with the mark <character>.  The ex-
          pressions "'<character>"  and  "`<character>"  can
          then be used as an address in any command that us-
          es one.

          Line:    Unchanged.
          Options: None.

     [[rraannggee]] mm[[oovvee]] lliinnee
          Move the specified lines after the target line.  A
          target line of 0 places the lines at the beginning
          of the file.

          Line:    Set to the first of the moved lines.
          Options: None.

     mmkk[[eexxrrcc]][[!!]] ffiillee
          Write the abbreviations, editor options  and  maps
          to  the specified file.  Information is written in
          a form which can later be read back in  using  the
          eexx  ssoouurrccee  command.   If file already exists, the
          mmkkeexxrrcc command will fail.  This check can be over-
          ridden  by  appending a "!"  character to the com-
          mand.

          Line:    Unchanged.
          Options: None.












VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--7711


     nn[[eexxtt]][[!!]] [[ffiillee ......]]
          Edit the next file from the  argument  list.   The
          nneexxtt  command will fail if the file has been modi-
          fied since the last complete  write.   This  check
          can  be overridden by appending the "!"  character
          to the command name.  The argument  list  can  op-
          tionally  be  replaced  by specifying a new one as
          arguments to this command.  In this case,  editing
          starts with the first file on the new list.

          Capitalizing the first letter of the command, i.e.
          NNeexxtt, while in vvii mode, will set the argument list
          and  edit the file in a new screen.  In this case,
          any modifications to the current file are ignored.

          Line:    Set as described for the eeddiitt command.
          Options: Affected  by  the  options  aauuttoowwrriittee and
                   wwrriitteeaannyy.

     [[lliinnee]] oo[[ppeenn]] //ppaatttteerrnn// [[ffllaaggss]]
          Enter open mode.  Open mode is the same  as  being
          in  vvii, but with a one-line window.  All the stan-
          dard vvii commands are available.   If  a  match  is
          found  for the optional RE argument, the cursor is
          set to the start of the matching pattern.

          _T_h_i_s _c_o_m_m_a_n_d _i_s _n_o_t _y_e_t _i_m_p_l_e_m_e_n_t_e_d_.

          Line:    Unchanged,  unless  the  optional  RE  is
                   specified, in which case it is set to the
                   line where the matching pattern is found.
          Options: Affected by the ooppeenn option.

     pprree[[sseerrvvee]]
          Save  the  file in a form that can later be recov-
          ered using the eexx --rr option.   When  the  file  is
          preserved, an email message is sent to the user.

          Line:    Unchanged.
          Options: None.

     pprreevv[[iioouuss]][[!!]]
          Edit  the  previous  file  from the argument list.
          The pprreevviioouuss command will fail  if  the  file  has
          been modified since the last complete write.  This
          check can  be  overridden  by  appending  the  "!"
          character to the command name.

          Capitalizing the first letter of the command, i.e.
          PPrreevviioouuss, while in vvii mode, will edit the file  in
          a  new screen.  In this case, any modifications to
          the current file are ignored.











UUSSDD::1133--7722                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          Line:    Set as described for the eeddiitt command.
          Options: Affected by  the  options  aauuttoowwrriittee  and
                   wwrriitteeaannyy.  None.

     [[rraannggee]] pp[[rriinntt]] [[ccoouunntt]] [[ffllaaggss]]
          Display the specified lines.

          Line:    Set to the last line displayed.
          Options: Affected by the lliisstt and nnuummbbeerr option.

     [[lliinnee]] ppuu[[tt]] [[bbuuffffeerr]]
          Append  buffer contents to the current line.  If a
          buffer is specified, its contents are appended  to
          the  line,  otherwise, the contents of the unnamed
          buffer are used.

          Line:    Set to the line after the current line.
          Options: None.

     qq[[uuiitt]][[!!]]
          End the editing session.  If  the  file  has  been
          modified  since  the last complete write, the qquuiitt
          command will fail.  This check may  be  overridden
          by appending a "!"  character to the command.

          If  there are more files to edit, the qquuiitt command
          will fail.  Appending a "!"  character to the com-
          mand name or entering two qquuiitt commands (i.e.  wwqq,
          qquuiitt, xxiitt or ZZZZ) in  a  row)  will  override  this
          check and the editor will exit.

          Line:    Unchanged.
          Options: None.

     [[lliinnee]] rr[[eeaadd]][[!!]] [[ffiillee]]
          Read  a file.  A copy of the specified file is ap-
          pended to the line.  If line is 0, the copy is in-
          serted  at  the beginning of the file.  If no file
          is specified, the current file is read;  if  there
          is  no current file, then file becomes the current
          file.  If there is no current file and no file  is
          specified, then the rreeaadd command will fail.

          If  file  is preceded by a "!"  character, file is
          treated as if it were a shell command, and  passed
          to  the  program  named  by the sshheellll edit option.
          The standard and standard error  outputs  of  that
          command are read into the file after the specified
          line.  The special meaning of the  "!"   character
          can  be overridden by escaping it with a backslash
          ("\") character.












VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--7733


          Line:    When executed from eexx, the  current  line
                   is  set to the last line read.  When exe-
                   cuted from vvii, the current line is set to
                   the first line read.
          Options: None.

     rreecc[[oovveerr]] ffiillee
          Recover  file  if  it was previously saved.  If no
          saved file by that name exists, the  rreeccoovveerr  com-
          mand behaves equivalently to the eeddiitt command.

          Line:    Set as described for the eeddiitt command.
          Options: None.

     rreess[[iizzee]] [[++||--]]ssiizzee
          VVii  mode only.  Grow or shrink the current screen.
          If size is a positive, signed number, the  current
          screen  is grown by that many lines.  If size is a
          negative, signed number,  the  current  screen  is
          shrunk by that many lines.  If size is not signed,
          the current screen is set to the  specified  size.
          Applicable only to split screens.

          Line:    Unchanged.
          Options: None.

     rreeww[[iinndd]][[!!]]
          Rewind the argument list.  If the current file has
          been modified since the last complete  write,  the
          rreewwiinndd command will fail.  This check may be over-
          ridden by appending the "!"  character to the com-
          mand.

          Otherwise,  the  current  file is set to the first
          file in the argument list.

          Line:    Set as described for the eeddiitt command.
          Options: Affected by the  aauuttoowwrriittee  and  wwrriitteeaannyy
                   options.

          [[aallll]]
     ssee[[tt]]  [[ooppttiioonn[[==[[vvaalluuee]]]]  ......]]  [[nnooooppttiioonn ......]] [[ooppttiioonn??
          ......]]
          Display  or set editor options.  When no arguments
          are specified, the editor option tteerrmm, and any ed-
          itor  options  whose values have been changed from
          the default settings are displayed.  If the  argu-
          ment all is specified, the values of all of editor
          options are displayed.

          Specifying an option name followed by the  charac-
          ter  "?"   causes the current value of that option
          to be displayed.  The "?"  can be  separated  from










UUSSDD::1133--7744                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          the option name by whitespace characters.  The "?"
          is necessary  only  for  Boolean  valued  options.
          Boolean  options  can  be given values by the form
          "set option" to turn them on, or "set nooption" to
          turn  them off.  String and numeric options can be
          assigned by  the  form  "set  option=value".   Any
          whitespace  characters  in strings can be included
          literally by  preceding  each  with  a  backslash.
          More  than  one  option  can be set or listed by a
          single set command, by specifying  multiple  argu-
          ments,  each separated from the next by whitespace
          characters.

          Line:    Unchanged.
          Options: None.

     sshh[[eellll]]
          Run the shell program.  The program named  by  the
          sshheellll  option  is  run with a --ii (for interactive)
          flag.  Editing is resumed when that program exits.

          Line:    Unchanged.
          Options: Affected by the sshheellll option.

     ssoo[[uurrccee]] ffiillee
          Read  and execute eexx commands from a file.  SSoouurrccee
          commands may be nested.

          Line:    Unchanged.
          Options: None.

          [[ffllaaggss]]
     [[rraannggee]] ss[[uubbssttiittuuttee]] [[//ppaatttteerrnn//rreeppllaaccee//]]  [[ooppttiioonnss]]
          [[ccoouunntt]]
     [[rraannggee]] && [[ooppttiioonnss]] [[ccoouunntt]] [[ffllaaggss]]
     [[rraannggee]] ~~ [[ooppttiioonnss]] [[ccoouunntt]] [[ffllaaggss]]
          Make substitutions.  Replace the first instance of
          pattern  with  the string replace on the specified
          line(s).  If the "/pattern/repl/" argument is  not
          specified,  the "/pattern/repl/" from the previous
          ssuubbssttiittuuttee command is used.  Any  character  other
          than  an alphabetic, numeric, <blank> or backslash
          character may be used as the delimiter.

          If options includes the letter "c" (confirm),  you
          will  be prompted for confirmation before each re-
          placement is done.  An  affirmative  response  (in
          English,  a  "y" character) causes the replacement
          to be made.  A quit response (in  English,  a  "q"
          character)  causes  the  ssuubbssttiittuuttee  command to be
          terminated.  Any other  response  causes  the  re-
          placement  not to be made, and the ssuubbssttiittuuttee com-
          mand continues.  If options  includes  the  letter










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--7755


          "g" (global), all nonoverlapping instances of pat-
          tern in the line are replaced.

          The && version of the command is the  same  as  not
          specifying  a pattern or replacement string to the
          ssuubbssttiittuuttee command, and the "&" is replaced by the
          pattern  and replacement information from the pre-
          vious substitute command.

          The ~~ version of the command is the same as &&  and
          ss, except that the search pattern used is the last
          RE used in _a_n_y command, not  necessarily  the  one
          used in the last ssuubbssttiittuuttee command.

          For example, in the sequence

              s/red/blue/
              /green
              ~

the "~" is equivalent to "s/green/blue/".

The  ssuubbssttiittuuttee command may be interrupted, using the termi-
nal interrupt character.  All substitutions completed before
the interrupt are retained.

          Line:    Set to the last line upon which a substi-
                   tution was made.
          Options: Affected by the iiggnnoorreeccaassee and mmaaggiicc  op-
                   tion.

     ssuu[[ssppeenndd]][[!!]]
     sstt[[oopp]][[!!]]
     <<ccoonnttrrooll--ZZ>>
          Suspend  the edit session.  Appending a "!"  char-
          acter to these commands turns  off  the  aauuttoowwrriittee
          option for the command.

          Line:    Unchanged.
          Options: Affected  by  the  aauuttoowwrriittee and wwrriitteeaannyy
                   options.

     ttaa[[gg]][[!!]] ttaaggssttrriinngg
          Edit the file containing the  specified  tag.   If
          the  tag is in a different file, then the new file
          is edited.  If the current file has been  modified
          since  the  last  complete  write, the ttaagg command
          will fail.  This check can be  overridden  by  ap-
          pending the "!"  character to the command name.

          The ttaagg command searches for tagstring in the tags
          file(s) specified by the  option.   (See  _c_t_a_g_s(1)
          for more information on tags files.)










UUSSDD::1133--7766                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          Capitalizing the first letter of the command, i.e.
          TTaagg, while in vvii mode, will edit the file in a new
          screen.   In  this  case, any modifications to the
          current file are ignored.

          Line:    Set to the line indicated by the tag.
          Options: Affected  by  the  aauuttoowwrriittee,  ttaagglleennggtthh,
                   ttaaggss and wwrriitteeaannyy options.

     ttaaggnn[[eexxtt]][[!!]]
          Edit  the file containing the next context for the
          current tag.  If the context  is  in  a  different
          file, then the new file is edited.  If the current
          file has been modified  since  the  last  complete
          write,  the ttaaggnneexxtt command will fail.  This check
          can be overridden by appending the "!"   character
          to the command name.

          Capitalizing the first letter of the command, i.e.
          TTaaggnneexxtt, while in vvii mode, will edit the file in a
          new  screen.   In  this case, any modifications to
          the current file are ignored.

          Line:    Set to the line indicated by the tag.
          Options: Affected by the  aauuttoowwrriittee  and  wwrriitteeaannyy
                   options.

     ttaaggpp[[oopp]][[!!]] [[ffiillee || nnuummbbeerr]]
          Pop  to  the  specified tag in the tags stack.  If
          neither file or number is  specified,  the  ttaaggppoopp
          command  pops to the most recent entry on the tags
          stack.  If file or number is specified, the ttaaggppoopp
          command  pops to the most recent entry in the tags
          stack for that file, or numbered entry in the tags
          stack, respectively.  (See the ddiissppllaayy command for
          information on displaying the tags stack.)

          If the file has been modified since the last  com-
          plete  write,  the ttaaggppoopp command will fail.  This
          check may be overridden by appending a "!"   char-
          acter to the command name.

          Line:    Set to the line indicated by the tag.
          Options: Affected  by  the  aauuttoowwrriittee and wwrriitteeaannyy
                   options.

     ttaaggpprr[[eevv]][[!!]]
          Edit the file containing the previous context  for
          the current tag.  If the context is in a different
          file, then the new file is edited.  If the current
          file  has  been  modified  since the last complete
          write, the ttaaggpprreevv command will fail.  This  check
          can  be overridden by appending the "!"  character










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--7777


          to the command name.

          Capitalizing the first letter of the command, i.e.
          TTaaggpprreevv, while in vvii mode, will edit the file in a
          new screen.  In this case,  any  modifications  to
          the current file are ignored.

          Line:    Set to the line indicated by the tag.
          Options: Affected  by  the  aauuttoowwrriittee and wwrriitteeaannyy
                   options.

     ttaaggtt[[oopp]][[!!]]
          Pop to the least recent tag  on  the  tags  stack,
          clearing the tags stack.

          If  the file has been modified since the last com-
          plete write, the ttaaggttoopp command will  fail.   This
          check  may be overridden by appending a "!"  char-
          acter to the command name.

          Line:    Set to the line indicated by the tag.
          Options: Affected by the  aauuttoowwrriittee  and  wwrriitteeaannyy
                   options.

     uunnaa[[bbbbrreevv]] llhhss
          Delete  an abbreviation.  Delete lhs from the cur-
          rent list of abbreviations.

          Line:    Unchanged.
          Options: None.

     uu[[nnddoo]]
          Undo the last change made to  the  file.   Changes
          made  by  gglloobbaall,  vv, vviissuuaall and map sequences are
          considered a single command.  If repeated,  the  uu
          command  alternates  between these two states, and
          is its own inverse.

          Line:    Set to the last line modified by the com-
                   mand.
          Options: None.

     uunnmm[[aapp]][[!!]] llhhss
          Unmap  a  mapped  string.  Delete the command mode
          map definition for lhs.  If a  "!"   character  is
          appended  to the command name, delete the text in-
          put mode map definition instead.

          Line:    Unchanged.
          Options: None.

     vvee[[rrssiioonn]]
          Display the version of the eexx//vvii editor.










UUSSDD::1133--7788                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


     [[lliinnee]] vvii[[ssuuaall]] [[ttyyppee]] [[ccoouunntt]] [[ffllaaggss]]
          EExx mode only.  Enter vvii.  The  type  is  optional,
          and  can  be  "-", "+" or "^", as in the eexx zz com-
          mand, to specify the  position  of  the  specified
          line  in  the  screen  window.  (The default is to
          place the line at the top of the  screen  window.)
          A  count  specifies  the number of lines that will
          initially be displayed.  (The default is the value
          of the wwiinnddooww editor option.)

          Line:    Unchanged  unless  line  is specified, in
                   which case it is set to that line.
          Options: None.

     vvii[[ssuuaall]][[!!]] [[++ccmmdd]] [[ffiillee]]
          VVii mode only.  Edit a new file.  Identical to  the
          "edit[!] [+cmd] [file]" command.

          Capitalizing the first letter of the command, i.e.
          VViissuuaall, will edit the file in a  new  screen.   In
          this  case,  any modifications to the current file
          are ignored.

     vviiuu[[ssaaggee]] [[ccoommmmaanndd]]
          Display usage for a vvii  command.   If  command  is
          specified,  a  usage statement for that command is
          displayed.  Otherwise, usage statements for all vvii
          commands are displayed.

          Line:    Unchanged.
          Options: None.

     [[rraannggee]] ww[[rriittee]][[!!]] [[>>>>]] [[ffiillee]]
     [[rraannggee]] ww[[rriittee]] [[!!]] [[ffiillee]]
     [[rraannggee]] wwnn[[!!]] [[>>>>]] [[ffiillee]]
     [[rraannggee]] wwqq[[!!]] [[>>>>]] [[ffiillee]]
          Write  the  file.  The specified lines (the entire
          file, if no range is given) is  written  to  file.
          If  file is not specified, the current pathname is
          used.  If file is specified, and it exists, or  if
          the  current  pathname was set using the ffiillee com-
          mand, and the file already exists, these  commands
          will fail.  Appending a "!"  character to the com-
          mand name will override this check and  the  write
          will be attempted, regardless.

          Specifying the optional ">>" string will cause the
          write to be appended to the file, in which case no
          tests are made for the file already existing.

          If  the  file is preceded by a "!"  character, the
          program named by the shell edit option is  invoked
          with  file  as its second argument, and the speci-










VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))                      UUSSDD::1133--7799


          fied lines are passed as standard  input  to  that
          command.  The "!"  in this usage must be separated
          from command name by at least one whitespace char-
          acter.   The  special  meaning  of the "!"  may be
          overridden by escaping it with a  backslash  ("\")
          character.

          The  wwqq version of the write command will exit the
          editor after writing the file,  if  there  are  no
          further files to edit.  Appending a "!"  character
          to the command name or entering  two  "quit"  com-
          mands  (i.e.   wwqq, qquuiitt, xxiitt or ZZZZ) in a row) will
          override this check and the editor will exit,  ig-
          noring any files that have not yet been edited.

          The  wwnn  version of the write command will move to
          the next file after writing the file,  unless  the
          write fails.

          Line:    Unchanged.
          Options: Affected by the rreeaaddoonnllyy and wwrriitteeaannyy op-
                   tions.

     [[rraannggee]] xx[[iitt]][[!!]] [[ffiillee]]
          Write the file if it has been modified.  The spec-
          ified  lines  are written to file, if the file has
          been modified since the last complete write to any
          file.   If  no range is specified, the entire file
          is written.

          The xxiitt command will exit the editor after writing
          the  file,  if there are no further files to edit.
          Appending a "!"  character to the command name  or
          entering  two "quit" commands (i.e.  wwqq, qquuiitt, xxiitt
          or ZZZZ) in a row) will override this check and  the
          editor will exit, ignoring any files that have not
          yet been edited.

          Line:    Unchanged.
          Options: Affected by the rreeaaddoonnllyy and wwrriitteeaannyy op-
                   tions.

     [[rraannggee]] yyaa[[nnkk]] [[bbuuffffeerr]] [[ccoouunntt]]
          Copy  the  specified  lines  to  a  buffer.  If no
          buffer is specified, the unnamed buffer is used.

          Line:    Unchanged.
          Options: None.

     [[lliinnee]] zz [[ttyyppee]] [[ccoouunntt]] [[ffllaaggss]]
          Adjust the window.  If no type is specified,  then
          count  lines following the specified line are dis-
          played.  The default count is  the  value  of  the










UUSSDD::1133--8800                      VVii//EExx RReeffeerreennccee ((EExx CCoommmmaannddss))


          wwiinnddooww  option.  The type argument changes the po-
          sition at which line is displayed on the screen by
          changing  the number of lines displayed before and
          after line.  The following type characters may  be
          used:

          -        Place  the  line  at  the  bottom  of the
                   screen.
          +        Place the line at the top of the  screen.
          .        Place  the  line  in  the  middle  of the
                   screen.
          ^        Write out count lines starting count *  2
                   lines before line; the net effect of this
                   is that a "z^" command following a zz com-
                   mand writes the previous page.
          =        Center  line on the screen with a line of
                   hyphens displayed immediately before  and
                   after  it.   The  number of preceding and
                   following lines of text displayed are re-
                   duced to account for those lines.

          Line:    Set  to the last line displayed, with the
                   exception of the type, where the  current
                   line  is set to the line specified by the
                   command.
          Options: Affected by the ssccrroollll option.

     1188..  SSeett OOppttiioonnss

          There are a large number of options  that  may  be
     set  (or  unset) to change the editor's behavior.  This
     section describes the options, their abbreviations  and
     their default values.

          In  each  entry  below,  the first part of the tag
     line is the full name of the option,  followed  by  any
     equivalent abbreviations.  (Regardless of the abbrevia-
     tions, it is only necessary to use the  minimum  number
     of  characters necessary to distinguish an abbreviation
     from all other commands  for  it  to  be  accepted,  in
     nneexx/nnvvii.   Historically, only the full name and the of-
     ficial abbreviations were  accepted  by  eexx/vvii.   Using
     full  names  in  your  startup  files and environmental
     variables will probably make them more portable.)   The
     part in square brackets is the default value of the op-
     tion.  Most of the options are boolean, i.e.  they  are
     either  on or off, and do not have an associated value.

          Options apply to both eexx and vvii modes, unless oth-
     erwise specified.

          With  a  few  exceptions, all options are settable
     per screen, i.e. the ttaaggss option can be set differently










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--8811


     in each screen.  The exceptions are the ccoolluummnnss, lliinneess,
     sseeccuurree and tteerrmm options.  Changing these options  modi-
     fies the respective information for all screens.

          For  information  on  modifying  the options or to
     display the options and their current values,  see  the
     "set" command in the section entitled "EExx CCoommmmaannddss".

     aallttwweerraassee [[ooffff]]
          VVii  only.   Change  how  vvii does word erase during
          text input.  When this option is set, text is bro-
          ken up into three classes: alphabetic, numeric and
          underscore characters, other nonblank  characters,
          and  blank characters.  Changing from one class to
          another marks the end of a word.  In addition, the
          class  of  the  first  character erased is ignored
          (which is exactly what you want when erasing path-
          name components).

     aauuttooiinnddeenntt,, aaii [[ooffff]]
          If  this  option is set, whenever you create a new
          line (using the vvii AA, aa, CC, cc, II, ii, OO, oo,  RR,  rr,
          SS,  and  ss commands, or the eexx aappppeenndd, cchhaannggee, and
          iinnsseerrtt commands) the new line is automatically in-
          dented to align the cursor with the first nonblank
          character of the line from which you  created  it.
          Lines are indented using tab characters to the ex-
          tent possible (based on the value of  the  ttaabbssttoopp
          option)  and then using space characters as neces-
          sary.  For commands inserting text into the middle
          of  a  line,  any blank characters to the right of
          the cursor are discarded, and the  first  nonblank
          character to the right of the cursor is aligned as
          described above.

          The indent characters are themselves somewhat spe-
          cial.   If you do not enter more characters on the
          new line before moving to another line, or  enter-
          ing <escape>, the indent character will be deleted
          and the line will be empty.  For example,  if  you
          enter  <carriage-return>  twice in succession, the
          line created by the first  <carriage-return>  will
          not  have  any characters in it, regardless of the
          indentation of the previous or subsequent line.

          Indent characters also require that you enter  ad-
          ditional erase characters to delete them.  For ex-
          ample, if you have an  indented  line,  containing
          only  blanks, the first <word-erase> character you
          enter will erase up to end of the  indent  charac-
          ters, and the second will erase back to the begin-
          ning of the line.  (Historically, only  the  <con-
          trol-D>  key  would  erase  the indent characters.










UUSSDD::1133--8822                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          Both the <control-D> key and the usual erase  keys
          work in nnvvii.)  In addition, if the cursor is posi-
          tioned at the end of the  indent  characters,  the
          keys  "0<control-D>"  will erase all of the indent
          characters for the current line, resetting the in-
          dentation level to 0.  Similarly, the keys "^<con-
          trol-D>" will erase all of the  indent  characters
          for the current line, leaving the indentation lev-
          el for future created lines unaffected.

          Finally, if the aauuttooiinnddeenntt option is  set,  the  SS
          and  cccc commands change from the first nonblank of
          the line to the end of the line, instead  of  from
          the  beginning of the line to the end of the line.

     aauuttoopprriinntt,, aapp [[ooffff]]
          EExx only.  Cause the current line to  be  automati-
          cally  displayed after the eexx commands <<, >>, ccooppyy,
          ddeelleettee, jjooiinn, mmoovvee, ppuutt, tt, UUnnddoo, and uunnddoo.   This
          automatic  display is suppressed during gglloobbaall and
          vv commands, and for  any  command  where  optional
          flags are used to explicitly display the line.

     aauuttoowwrriittee,, aaww [[ooffff]]
          If  this option is set, the vvii !!, ^^^^, ^^]] and <<ccoonn--
          ttrrooll--ZZ>> commands, and the eexx eeddiitt,  nneexxtt,  rreewwiinndd,
          ssttoopp,  ssuussppeenndd,  ttaagg,  ttaaggppoopp, and ttaaggttoopp commands
          automatically write the current file back  to  the
          current file name if it has been modified since it
          was last written.  If the write fails, the command
          fails and goes no further.

          Appending  the  optional  force flag character "!"
          to the eexx commands nneexxtt,  rreewwiinndd,  ssttoopp,  ssuussppeenndd,
          ttaagg,  ttaaggppoopp, and ttaaggttoopp stops the automatic write
          from being attempted.

          (Historically, the nneexxtt command  ignored  the  op-
          tional  force  flag.)  Note, the eexx commands eeddiitt,
          qquuiitt, sshheellll, and xxiitt are _n_o_t affected by  the  aauu--
          ttoowwrriittee option.

          The  aauuttoowwrriittee  option  is  ignored if the file is
          considered read-only for any reason.

     bbaacckkuupp [[""""]]
          If this option is set,  it  specifies  a  pathname
          used  as  a  backup  file, and, whenever a file is
          written, the file's current contents are copied to
          it.  The pathname is "#", "%" and "!"  expanded.

          If  the  first character of the pathname is "N", a
          version number is appended to  the  pathname  (and










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--8833


          the  "N"  character  is  then discarded).  Version
          numbers are always incremented,  and  each  backup
          file  will  have a version number one greater than
          the highest version number currently found in  the
          directory.

          Backup  files  must be regular files, owned by the
          real user ID of the user running the  editor,  and
          not accessible by any other user.

     bbeeaauuttiiffyy,, bbff [[ooffff]]
          If this option is set, all control characters that
          are not  currently  being  specially  interpreted,
          other  than <tab>, <newline>, and <form-feed>, are
          discarded from commands read in by eexx from command
          files,  and  from input text entered to vvii (either
          into the file or to the colon command line).  Text
          files  read by eexx/vvii are _n_o_t affected by the bbeeaauu--
          ttiiffyy option.

     ccddppaatthh [[eennvviirroonnmmeenntt vvaarriiaabbllee CCDDPPAATTHH,, oorr ccuurrrreenntt ddiirreecc--
          ttoorryy]]
          This  option  is used to specify a colon separated
          list of directories which are used as path prefix-
          es  for  any relative path names used as arguments
          for the ccdd command.  The value of this option  de-
          faults  to the value of the environmental variable
          CDPATH if it is set, otherwise to the current  di-
          rectory.   For compatibility with the POSIX 1003.2
          shell, the ccdd command does _n_o_t check  the  current
          directory as a path prefix for relative path names
          unless it is explicitly specified.  It may  be  so
          specified  by  entering  an  empty string or a "."
          character into the CDPATH variable or  the  option
          value.

     cceeddiitt [[nnoo ddeeffaauulltt]]
          This  option  adds  the  ability to edit the colon
          command-line history.  This option  is  set  to  a
          string.   Whenever  the  first  character  of that
          string is entered on the colon command  line,  you
          will enter a normal editing window on the collect-
          ed commands that you've entered on  the  vvii  colon
          command-line.   You may then modify and/or execute
          the commands.  All normal text editing  is  avail-
          able,  except  that  you cannot use <<ccoonnttrrooll--WW>> to
          switch to an alternate screen.  Entering  a  <<ccaarr--
          rriiaaggee--rreettuurrnn>> will execute the current line of the
          screen window as an ex command in the  context  of
          the  screen  from which you created the colon com-
          mand-line screen, and you will then return to that
          screen.











UUSSDD::1133--8844                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          Because of vvii's parsing rules, it can be difficult
          to set the colon command-line  edit  character  to
          the  <escape>  character.   To set it to <escape>,
          use "set cedit=<literal-next><escape>".

          If the cceeddiitt edit option is set to the same  char-
          acter  as  the  ffiilleecc edit option, vvii will perform
          colon command-line editing if the character is en-
          tered  as  the first character of the line, other-
          wise, vvii will perform file name expansion.

     ccoolluummnnss,, ccoo [[8800]]
          The number of columns in the screen.  Setting this
          option causes eexx/vvii to set (or reset) the environ-
          mental variable COLUMNS.  See the section entitled
          "SSiizziinngg tthhee SSccrreeeenn" more information.

     ccoommmmeenntt [[ooffff]]
          VVii  only.  If the first non-empty line of the file
          begins with the string "#", "/*" or "//", this op-
          tion causes vvii to skip to the end of that shell, C
          or C++ comment (probably a terribly  boring  legal
          notice) before displaying the file.

     ddiirreeccttoorryy,, ddiirr [[eennvviirroonnmmeenntt vvaarriiaabbllee TTMMPPDDIIRR,, oorr //ttmmpp]]
          The  directory  where temporary files are created.
          The environmental variable TMPDIR is used  as  the
          default  value  if  it  exists,  otherwise /tmp is
          used.

     eeddccoommppaattiibbllee,, eedd [[ooffff]]
          Remember the values of the "c" and "g" suffixes to
          the  ssuubbssttiittuuttee  commands, instead of initializing
          them as unset for each  new  command.   Specifying
          pattern  and replacement strings to the ssuubbssttiittuuttee
          command unsets the "c" and "g" suffixes as well.

     eessccaappeettiimmee [[11]]
          The 10th's of a second eexx/vvii waits  for  a  subse-
          quent key to complete an <escape> key mapping.

     eerrrroorrbbeellllss,, eebb [[ooffff]]
          EExx only.  EExx error messages are normally presented
          in inverse video.  If that is not possible for the
          terminal,  setting  this  option causes error mes-
          sages to be  announced  by  ringing  the  terminal
          bell.

     eexxrrcc,, eexx [[ooffff]]
          If this option is turned on in the EXINIT environ-
          ment variables, or the  system  or  $HOME  startup
          files,  the  local  startup files are read, unless
          they are the same as the system or  $HOME  startup










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--8855


          files  or  fail  to  pass  the standard permission
          checks.  See the section entitled "SSttaarrttuupp  IInnffoorr--
          mmaattiioonn" for more information.

     eexxtteennddeedd [[ooffff]]
          This  option  causes all regular expressions to be
          treated as POSIX 1003.2 Extended  Regular  Expres-
          sions  (which  are  similar  to  historic _e_g_r_e_p(1)
          style expressions).

     ffiilleecc [[nnoo ddeeffaauulltt]]
          This option adds the ability to do shell expansion
          when  entering  input  on  the colon command line.
          This option is set  to  a  string.   Whenever  the
          first  character  of that string is entered on the
          colon command line, the <blank>  delimited  string
          immediately before the cursor is expanded as if it
          were followed by a * character, and file name  ex-
          pansion  for  the eexx edit command was done.  If no
          match is found, the screen is flashed and text in-
          put  resumed.   If  a  single  match results, that
          match replaces the expanded text.  In addition, if
          the single match is for a directory, a / character
          is appended and file completion is  repeated.   If
          more  than a single match results, any unique pre-
          fix shared by the matches  replaces  the  expanded
          text,  the  matches  are displayed, and text input
          resumed.

          Because of vvii's parsing rules, it can be difficult
          to  set  the path completion character to two com-
          mand values, <escape> and <tab>.   To  set  it  to
          <escape>,  use "set filec=<literal-next><escape>".
          To set it to <tab>, use "set filec=\<tab>".

          If the cceeddiitt edit option is set to the same  char-
          acter  as  the  ffiilleecc edit option, vvii will perform
          colon command-line editing if the character is en-
          tered  as  the first character of the line, other-
          wise, vvii will perform file name expansion.

     ffllaasshh [[oonn]]
          This option causes the screen to flash instead  of
          beeping  the  keyboard,  on error, if the terminal
          has the capability.

     hhaarrddttaabbss,, hhtt [[88]]
          This option defines the spacing  between  hardware
          tab  settings, i.e.  the tab expansion done by the
          operating system and/or the terminal  itself.   As
          nneexx/nnvvii  never writes <tab> characters to the ter-
          minal, unlike historic versions of eexx/vvii, this op-
          tion does not currently have any affect.










UUSSDD::1133--8866                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


     iicclloowweerr [[ooffff]]
          The  iicclloowweerr edit option makes all Regular Expres-
          sions case-insensitive, as long as  an  upper-case
          letter does not appear in the search string.

     iiggnnoorreeccaassee,, iicc [[ooffff]]
          This option causes regular expressions, both in eexx
          commands and in searches, to  be  evaluated  in  a
          case-insensitive manner.

     kkeeyyttiimmee [[66]]
          The  10th's  of  a second eexx/vvii waits for a subse-
          quent key to complete a key mapping.

     lleeffttrriigghhtt [[ooffff]]
          VVii only.  This option  causes  the  screen  to  be
          scrolled  left-right to view lines longer than the
          screen, instead of the traditional vvii  screen  in-
          terface  which  folds long lines at the right-hand
          margin of the terminal.

     lliinneess,, llii [[2244]]
          VVii only.  The number of lines in the screen.  Set-
          ting  this  option  causes eexx/vvii to set (or reset)
          the environmental variable LINES.  See the section
          entitled "SSiizziinngg tthhee SSccrreeeenn" for more information.

     lliisspp [[ooffff]]
          VVii only.  This option changes the behavior of  the
          vvii  ((,  )),  {{,  }}, [[[[ and ]]]] commands to match the
          Lisp language.  Also, the aauuttooiinnddeenntt option's  be-
          havior is changed to be appropriate for Lisp.

          _T_h_i_s _o_p_t_i_o_n _i_s _n_o_t _y_e_t _i_m_p_l_e_m_e_n_t_e_d_.

     lliisstt [[ooffff]]
          This option causes lines to be displayed in an un-
          ambiguous fashion.  Specifically,  tabs  are  dis-
          played  as control characters, i.e.  "^I", and the
          ends of lines are marked with a "$" character.

     lloocckk [[oonn]]
          This option causes the editor to attempt to get an
          exclusive  lock  on any file being edited, read or
          written.  Reading or writing a file that cannot be
          locked  produces  a  warning message, but no other
          effect.  Editing a file that cannot be locked  re-
          sults in a read only edit session, as if the rreeaadd--
          oonnllyy edit option were set.

     mmaaggiicc [[oonn]]
          This option is on by default.  Turning  the  mmaaggiicc
          option  off  causes all regular expression charac-










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--8877


          ters except for "^" and "$", to be treated as  or-
          dinary  characters.  To re-enable characters indi-
          vidually, when the mmaaggiicc option  is  off,  precede
          them with a backslash "\" character.  See the sec-
          tion entitled "RReegguullaarr EExxpprreessssiioonnss aanndd RReeppllaacceemmeenntt
          SSttrriinnggss" for more information.

     mmaattcchhcchhaarrss [[[[]]{{}}(())<<>>]]
          VVii  only.  This option defines the character pairs
          used by the %% command.

     mmaattcchhttiimmee [[77]]
          VVii only.  The 10th's of a second vvii pauses on  the
          matching  character  when  the sshhoowwmmaattcchh option is
          set.

     mmeessgg [[oonn]]
          This option allows other users to contact you  us-
          ing  the _t_a_l_k(1) and _w_r_i_t_e(1) utilities, while you
          are editing.  EExx/vvii does not turn message on, i.e.
          if  messages  were  turned off when the editor was
          invoked, they will stay turned off.   This  option
          only permits you to disallow messages for the edit
          session.  See the _m_e_s_g(1) utility for more  infor-
          mation.

     mmssggccaatt [[..//]]
          This  option  selects a message catalog to be used
          to display error and informational messages  in  a
          specified  language.   If the value of this option
          ends with a '/', it is treated as the  name  of  a
          directory   that   contains   a   message  catalog
          "vi_XXXX", where "XXXX" is the value of  the  LANG
          environmental  variable, if it's set, or the value
          of the LC_MESSAGES environmental variable if  it's
          not.   If neither of those environmental variables
          are set, or if the option doesn't end  in  a  '/',
          the option is treated as the full path name of the
          message catalog to use.

          If any messages are missing from the catalog,  the
          backup text (English) is used instead.

          See the distribution file catalog/README for addi-
          tional information on building and installing mes-
          sage catalogs.

     mmooddeelliinneess,, mmooddeelliinnee [[ooffff]]
          If the mmooddeelliinneess option is set, eexx/vvii has histori-
          cally scanned the first and  last  five  lines  of
          each  file  as it is read for editing, looking for
          any eexx commands that have  been  placed  in  those
          lines.   After  the  startup  information has been










UUSSDD::1133--8888                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          processed, and before the user starts editing  the
          file,  any  commands embedded in the file are exe-
          cuted.

          Commands were recognized by the letters "e" or "v"
          followed by "x" or "i", at the beginning of a line
          or following a tab or space  character,  and  fol-
          lowed by a ":", an eexx command, and another ":".

          This  option is a security problem of immense pro-
          portions, and should not be used under any circum-
          stances.

          _T_h_i_s _o_p_t_i_o_n _w_i_l_l _n_e_v_e_r _b_e _i_m_p_l_e_m_e_n_t_e_d_.

     nnoopprriinntt [[""""]]
          Characters  that  are  never  handled as printable
          characters.  By default, the  C  library  function
          _i_s_p_r_i_n_t(3)  is used to determine if a character is
          printable or not.  This edit option overrides that
          decision.

     nnuummbbeerr,, nnuu [[ooffff]]
          Precede  each line displayed with its current line
          number.

     ooccttaall [[ooffff]]
          Display  unknown  characters  as   octal   numbers
          ("\###"),   instead  of  the  default  hexadecimal
          ("\x##").

     ooppeenn [[oonn]]
          EExx only.  If this option is not set, the ooppeenn  and
          vviissuuaall commands are disallowed.

     ooppttiimmiizzee,, oopptt [[oonn]]
          VVii  only.  Throughput of text is expedited by set-
          ting the terminal not to do automatic carriage re-
          turns  when  printing more than one (logical) line
          of output, greatly speeding  output  on  terminals
          without addressable cursors when text with leading
          white space is printed.

          _T_h_i_s _o_p_t_i_o_n _i_s _n_o_t _y_e_t _i_m_p_l_e_m_e_n_t_e_d_.

     ppaarraaggrraapphhss,, ppaarraa [[IIPPLLPPPPPPQQPPPP LLIIppppllppiippbbpp]]
          VVii only.  Define additional  paragraph  boundaries
          for  the  {{ and }} commands.  The value of this op-
          tion must be a character string consisting of zero
          or more character pairs.

          In  the  text  to  be edited, the character string
          <newline>.<char-pair>, (where <char-pair>  is  one










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--8899


          of  the character pairs in the option's value) de-
          fines a paragraph boundary.  For example,  if  the
          option  were  set to LaA<space>##, then all of the
          following additional paragraph boundaries would be
          recognized:


              <newline>.La
              <newline>.A<space>
              <newline>.##


     ppaatthh [[]]
          The  path  option  can  be  used  to specify a
          <colon>-separated list of  paths,  similar  to
          the  PATH  environment variable in the shells.
          If this option is set, the name of the file to
          be  edited  is  not  an absolute pathname, the
          first component of the filename is not "."  or
          "..",  and the file to be edited doesn't exist
          in the current directory, the elements of  the
          ppaatthh  option  are  sequentially searched for a
          file of the specified name.  If such a file is
          found, it is edited.

     pprriinntt [[""""]]
          Characters  that  are always handled as print-
          able characters.  By default,  the  C  library
          function  _i_s_p_r_i_n_t(3) is used to determine if a
          character is printable or not.  This edit  op-
          tion overrides that decision.

     pprroommpptt [[oonn]]
          EExx  only.  This option causes eexx to prompt for
          command input with a ":" character; when it is
          not set, no prompt is displayed.

     rreeaaddoonnllyy,, rroo [[ooffff]]
          This option causes a force flag to be required
          to attempt to write the  file.   Setting  this
          option  is  equivalent to using the --RR command
          line option, or executing the vvii program using
          the name vviieeww.

          The  rreeaaddoonnllyy  edit option is not usually per-
          sistent, like other edit options.  If  the  --RR
          command  line option is set, vvii is executed as
          vviieeww, or the rreeaaddoonnllyy edit option is explicit-
          ly set, all files edited in the screen will be
          marked readonly, and the force  flag  will  be
          required  to  write them.  However, if none of
          these conditions are true, or the rreeaaddoonnllyy ed-
          it  option is explicitly unset, then the rreeaadd--










UUSSDD::1133--9900                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          oonnllyy edit option  will  toggle  based  on  the
          write  permissions of the file currently being
          edited as of when it is loaded into  the  edit
          buffer.  In other words, the rreeaaddoonnllyy edit op-
          tion will be set if  the  current  file  lacks
          write  permissions, and will not be set if the
          user has write permissions for the file.

     rreeccddiirr [[//vvaarr//ttmmpp//vvii..rreeccoovveerr]]
          The directory where recovery files are stored.

          If  you change the value of rreeccddiirr, be careful
          to choose a directory whose contents  are  not
          regularly deleted.  Bad choices include direc-
          tories in memory based filesystems,  or  /tmp,
          on most systems, as their contents are removed
          when the machine is rebooted.

          Public directories like /usr/tmp and  /var/tmp
          are usually safe, although some sites periodi-
          cally prune old files from them.  There is  no
          requirement  that  you use a public directory,
          e.g. a sub-directory of  your  home  directory
          will work fine.

          Finally,  if  you  change the value of rreeccddiirr,
          you must modify the recovery script to operate
          in your chosen recovery area.

          See  the  section entitled "RReeccoovveerryy" for fur-
          ther information.

     rreeddrraaww,, rree [[ooffff]]
          VVii only.  The editor  simulates  (using  great
          amounts of output), an intelligent terminal on
          a dumb terminal (e.g. during insertions in  vvii
          the  characters to the right of the cursor are
          refreshed as each input character is typed).

          _T_h_i_s _o_p_t_i_o_n _i_s _n_o_t _y_e_t _i_m_p_l_e_m_e_n_t_e_d_.

     rreemmaapp [[oonn]]
          If this option is set, it is possible  to  de-
          fine  macros in terms of other macros.  Other-
          wise, each key is  only  remapped  up  to  one
          time.   For  example, if "A" is mapped to "B",
          and "B" is mapped to "C",  The  keystroke  "A"
          will  be  mapped to "C" if the rreemmaapp option is
          set, and to "B" if it is not set.

     rreeppoorrtt [[55]]
          Set the threshold of the number of lines  that
          need  to be changed or yanked before a message










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--9911


          will be displayed to the user.  For everything
          but the yank command, the value is the largest
          value about which the editor is  silent,  i.e.
          by default, 6 lines must be deleted before the
          user is notified.  However, if the  number  of
          lines  yanked  is greater than _o_r _e_q_u_a_l _t_o the
          set value, it is reported to the user.

     rruulleerr [[ooffff]]
          VVii only.  Display a row/column  ruler  on  the
          colon command line.

     ssccrroollll,, ssccrr [[((eennvviirroonnmmeenntt vvaarriiaabbllee LLIINNEESS -- 11)) // 22]]
          Set  the  number  of  lines scrolled by the eexx
          <<ccoonnttrrooll--DD>> and <<eenndd--ooff--ffiillee>> commands.

          Historically, the eexx zz command, when specified
          without  a  count,  used two times the size of
          the scroll value; the  POSIX  1003.2  standard
          specified  the  window size, which is a better
          choice.

     sseeaarrcchhiinnccrr [[ooffff]]
          The sseeaarrcchhiinnccrr edit option  makes  the  search
          commands // and ??  incremental, i.e. the screen
          is updated and the cursor moves to the  match-
          ing text as the search pattern is entered.  If
          the search pattern is not found, the screen is
          beeped  and  the  cursor remains on the colon-
          command line.   Erasing  characters  from  the
          search pattern backs the cursor up to the pre-
          vious matching text.

     sseeccttiioonnss,, sseecctt [[NNHHSSHHHH HHUUnnhhsshh]]
          VVii only.  Define additional section boundaries
          for  the [[[[ and ]]]] commands.  The sseeccttiioonnss op-
          tion should be set to a character string  con-
          sisting  of  zero or more character pairs.  In
          the text to be edited,  the  character  string
          <newline>.<char-pair>,  (where  <char-pair> is
          one of the character  pairs  in  the  option's
          value), defines a section boundary in the same
          manner that ppaarraaggrraapphhss option  boundaries  are
          defined.

     sseeccuurree [[ooffff]]
          The sseeccuurree edit option turns off all access to
          external programs.  This means that  the  ver-
          sions of the rreeaadd and wwrriittee commands that fil-
          ter text through other programs, the vvii !!  and
          <<ccoonnttrrooll--ZZ>> commands, the eexx !!, ssccrriipptt, sshheellll,
          ssttoopp and ssuussppeenndd commands and file name expan-
          sion will not be permitted.  Once set, the ssee--










UUSSDD::1133--9922                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          ccuurree edit option may not be unset.

     sshheellll,, sshh [[eennvviirroonnmmeenntt vvaarriiaabbllee SSHHEELLLL,, oorr //bbiinn//sshh]]
          Select the shell  used  by  the  editor.   The
          specified  path  is  the pathname of the shell
          invoked by the vvii !!  shell escape command  and
          by the eexx sshheellll command.  This program is also
          used to resolve any shell  meta-characters  in
          eexx commands.

     sshheellllmmeettaa [[~~{{[[**??$$``''""\\]]
          The  set of characters that eexx checks for when
          doing file name  expansion.   If  any  of  the
          specified  characters  are  found  in the file
          name arguments to the eexx commands,  the  argu-
          ments  are  expanded using the program defined
          by the sshheellll option.  The default set of char-
          acters  is a union of meta characters from the
          Version 7 and the Berkeley C shell.

     sshhiiffttwwiiddtthh,, ssww [[88]]
          Set the autoindent and shift command  indenta-
          tion width.  This width is used by the aauuttooiinn--
          ddeenntt option and by the <<, >>,  and  sshhiifftt  com-
          mands.

     sshhoowwmmaattcchh,, ssmm [[ooffff]]
          VVii only.  This option causes vvii, when a "}" or
          ")" is entered, to briefly move the cursor the
          matching "{" or "(".  See the mmaattcchhttiimmee option
          for more information.

     sshhoowwmmooddee,, ssmmdd [[ooffff]]
          VVii only.  This option causes vvii to  display  a
          string  identifying the current editor mode on
          the colon command line.  The string is preced-
          ed by an asterisk (``*'') if the file has been
          modified since it was last completely written,

     ssiiddeessccrroollll [[1166]]
          VVii  only.  Sets the number of columns that are
          shifted to the left or right, when vvii is doing
          left-right  scrolling  and  the  left or right
          margin is crossed.  See the  lleeffttrriigghhtt  option
          for more information.

     sslloowwooppeenn,, ssllooww [[ooffff]]
          This option affects the display algorithm used
          by vvii, holding off display updating during in-
          put of new text to improve throughput when the
          terminal in use is slow and unintelligent.

          _T_h_i_s _o_p_t_i_o_n _i_s _n_o_t _y_e_t _i_m_p_l_e_m_e_n_t_e_d_.










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--9933


     ssoouurrcceeaannyy [[ooffff]]
          If this option is turned on,  vvii  historically
          read  startup files that were owned by someone
          other than the editor user.  See  the  section
          entitled "SSttaarrttuupp IInnffoorrmmaattiioonn" for more infor-
          mation.  This option is a security problem  of
          immense  proportions,  and  should not be used
          under any circumstances.

          _T_h_i_s _o_p_t_i_o_n _w_i_l_l _n_e_v_e_r _b_e _i_m_p_l_e_m_e_n_t_e_d_.

     ttaabbssttoopp,, ttss [[88]]
          This option sets tab  widths  for  the  editor
          display.

     ttaagglleennggtthh,, ttll [[00]]
          This option sets the maximum number of charac-
          ters that are considered significant in a  tag
          name.  Setting the value to 0 makes all of the
          characters in the tag name significant.

     ttaaggss,, ttaagg [[ttaaggss //vvaarr//ddbb//lliibbcc..ttaaggss //ssyyss//kkeerrnn//ttaaggss]]
          Sets the list of tags files, in search  order,
          which  are used when the editor searches for a
          tag.

     tteerrmm,, ttttyyttyyppee,, ttttyy [[eennvviirroonnmmeenntt vvaarriiaabbllee TTEERRMM]]
          Set the terminal type.   Setting  this  option
          causes eexx/vvii to set (or reset) the environmen-
          tal variable TERM.

     tteerrssee [[ooffff]]
          This option has historically made editor  mes-
          sages  less verbose.  It has no effect in this
          implementation.  See the  vveerrbboossee  option  for
          more information.

     ttiillddeeoopp [[ooffff]]
          Modify the ~~ command to take an associated mo-
          tion.

     ttiimmeeoouutt,, ttoo [[oonn]]
          If this option is set, eexx/vvii waits for a  spe-
          cific  period for a subsequent key to complete
          a key mapping (see the  kkeeyyttiimmee  option).   If
          the  option is not set, the editor waits until
          enough keys are entered to resolve the ambigu-
          ity, regardless of how long it takes.

     ttttyywweerraassee [[ooffff]]
          VVii only.  This option changes how vvii does word
          erase during text input.  If  this  option  is
          set, text is broken up into two classes, blank










UUSSDD::1133--9944                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          characters and nonblank characters.   Changing
          from  one  class to another marks the end of a
          word.

     vveerrbboossee [[ooffff]]
          VVii only.  VVii historically bells  the  terminal
          for many obvious mistakes, e.g. trying to move
          past the left-hand margin, or past the end  of
          the  file.   If  this  option is set, an error
          message is displayed for all errors.

     ww330000 [[nnoo ddeeffaauulltt]]
          VVii only.  Set the window size if the baud rate
          is less than 1200 baud.  See the wwiinnddooww option
          for more information.

     ww11220000 [[nnoo ddeeffaauulltt]]
          VVii only.  Set the window size if the baud rate
          is  equal to 1200 baud.  See the wwiinnddooww option
          for more information.

     ww99660000 [[nnoo ddeeffaauulltt]]
          VVii only.  Set the window size if the baud rate
          is greater than 1200 baud.  See the wwiinnddooww op-
          tion for more information.

     wwaarrnn [[oonn]]
          EExx only.  This option causes a warning message
          to the terminal if the file has been modified,
          since it was last written, before  a  !!   com-
          mand.

     wwiinnddooww,, ww,, wwii [[eennvviirroonnmmeenntt vvaarriiaabbllee LLIINNEESS -- 11]]
          This  option  determines the default number of
          lines in a screenful, as displayed  by  the  zz
          command.   It  also  determines  the number of
          lines scrolled by the vvii commands  <<ccoonnttrrooll--BB>>
          and  <<ccoonnttrrooll--FF>>,  and  the  default number of
          lines scrolled by the vvii commands  <<ccoonnttrrooll--DD>>
          and  <<ccoonnttrrooll--UU>>.   The value of window can be
          unrelated to the real screen size, although it
          starts  out  as  the  number  of  lines on the
          screen.  See the section entitled "SSiizziinngg  tthhee
          SSccrreeeenn"  for  more  information.   Setting the
          value of the wwiinnddooww option is the same as  us-
          ing the --ww command line option.

          If  the  value of the wwiinnddooww option (as set by
          the wwiinnddooww, ww330000, ww11220000 or ww99660000  options)  is
          smaller  than  the  actual size of the screen,
          large screen movements will result in display-
          ing  only  that smaller number of lines on the
          screen.  (Further movements in that same  area










VVii//EExx RReeffeerreennccee ((OOppttiioonnss))                          UUSSDD::1133--9955


          will result in the screen being filled.)  This
          can provide  a  performance  improvement  when
          viewing  different places in one or more files
          over a slow link.

          Resetting the window size does not  reset  the
          default  number of lines scrolled by the <<ccoonn--
          ttrrooll--DD>> and <<ccoonnttrrooll--UU>> commands.

     wwiinnddoowwnnaammee [[ooffff]]
          VVii changes the name of the editor's  icon/win-
          dow  to the current file name when it's possi-
          ble and not destructive, i.e., when the editor
          can  restore  it to its original value on exit
          or when the icon/window will be  discarded  as
          the  editor exits.  If the wwiinnddoowwnnaammee edit op-
          tion is set, vvii will  change  the  icon/window
          name   even  when  it's  destructive  and  the
          icon/window name will remain after the  editor
          exits.  (This is the case for _x_t_e_r_m(1)).

     wwrraapplleenn,, wwll [[00]]
          This option is identical to the wwrraappmmaarrggiinn op-
          tion, with the exception that it specifies the
          number  of columns from the _l_e_f_t margin before
          the line splits, not the right margin.

          If both wwrraapplleenn and wwrraappmmaarrggiinn  are  set,  the
          wwrraappmmaarrggiinn value is used.

     wwrraappmmaarrggiinn,, wwmm [[00]]
          VVii  only.   If the value of the wwrraappmmaarrggiinn op-
          tion is non-zero, vvii will split lines so  that
          they  end  at least that number of columns be-
          fore the  right-hand  margin  of  the  screen.
          (Note,  the  value of wwrraappmmaarrggiinn is _n_o_t a text
          length.  In a screen that is 80 columns  wide,
          the  command  ":set  wrapmargin=8" attempts to
          keep the lines less than or equal to  72  col-
          umns wide.)

          Lines  are  split  at  the previous whitespace
          character closest to the number.  Any trailing
          whitespace  characters  before  that character
          are deleted.  If the line is split because  of
          an  inserted  <space>  or <tab> character, and
          you then enter another <space>  character,  it
          is discarded.

          If  wrapmargin  is set to 0, or if there is no
          blank character upon which to split the  line,
          the line is not broken.











UUSSDD::1133--9966                          VVii//EExx RReeffeerreennccee ((OOppttiioonnss))


          If  both  wwrraapplleenn  and wwrraappmmaarrggiinn are set, the
          wwrraappmmaarrggiinn value is used.

     wwrraappssccaann,, wwss [[oonn]]
          This option causes searches to wrap around the
          end  or the beginning of the file, and back to
          the starting point.  Otherwise, the end or be-
          ginning of the file terminates the search.

     wwrriitteeaannyy,, wwaa [[ooffff]]
          If this option is set, file-overwriting checks
          that would usually be made  before  the  wwrriittee
          and xxiitt commands, or before an automatic write
          (see the  aauuttoowwrriittee  option),  are  not  made.
          This  allows a write to any file, provided the
          file permissions allow it.















































VVii//EExx RReeffeerreennccee                                    UUSSDD::1133--9977


     1199..  IInnddeexx






























































VVii//EExx RReeffeerreennccee                                     UUSSDD::1133--33


                        TTaabbllee ooff CCoonntteennttss

     Description ......................................    4
     Additional Features in Nex/Nvi ...................    4
     Startup Information ..............................    6
     Recovery .........................................    8
     Sizing the Screen ................................    9
     Character Display ................................   10
     Multiple Screens .................................   10
     Tags, Tag Stacks, and Cscope .....................   11
     Regular Expressions and Replacement Strings ......   14
     Scripting Languages ..............................   16
     General Editor Description .......................   17
     Vi Description ...................................   21
     Vi Commands ......................................   25
     Vi Text Input Commands ...........................   54
     Ex Addressing ....................................   56
     Ex Description ...................................   58
     Ex Commands ......................................   60
     Set Options ......................................   80
     Index ............................................   97






































