STEVIE

From Atari Wiki
Revision as of 16:06, 30 October 2006 by Zorro 2 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search



                      STEVIE - An Aspiring VI Clone

                          User Reference - 3.91

                               Tony Andrews
                               Ric Kalford



       1.  Overview
       STEVIE is an editor designed to mimic the interface  of  the
       UNIX  editor  'vi'.  The name (ST Editor for VI Enthusiasts)
       comes from the fact that the editor was  first  written  for
       the Atari ST.  The current version also supports UNIX, Minix
       (ST), MS-DOS, and OS/2, but I've left the  name  intact  for
       now.

       This program is the result of many late  nights  of  hacking
       over  the last couple of years.  The first version was writ-
       ten by Tim Thompson and posted  to  USENET.  From  there,  I
       reworked  the  data  structures  completely,  added  LOTS of
       features, and generally improved the overall performance  in
       the process.

       I've labelled STEVIE an 'aspiring' vi clone as a warning  to
       those  who  may expect too much. On the whole, the editor is
       pretty complete.  Nearly all of the visual mode commands are
       supported.   And several of the more important 'ex' commands
       are supported as well.  I've tried hard to capture the  feel
       of vi by getting the little things right.  Making lines wrap
       correctly, supporting true operators, and even  getting  the
       cursor  to  land on the right place for tabs are all a pain,
       but really help make the editor feel right.  I've  tried  to
       resist  the  temptation  to deviate from the behavior of vi,
       even where I disagree with the original design.

       The biggest problem remaining has to do with the  fact  that
       the  edit  buffer is maintained entirely in memory, limiting
       the size of files that can be edited in  some  environments.
       Other  missing  features  include  named buffers and macros.
       Performance is generally  reasonable,  although  the  screen
       update code could be more efficient.  This is generally only
       visible on fairly slow systems.

       STEVIE may be freely distributed.  The  source  isn't  copy-
       righted  or  restricted  in any way. If you pass the program
       along, please include all the documentation and, if  practi-
       cal, the source as well. I'm not fanatical about this, but I
       tried to make STEVIE fairly portable and I'd like to see  as
       many people have access to the source as possible.

       The remainder of this document describes  the  operation  of
       the  editor.   This  is  intended  as  a reference for users
       already familiar with the real vi editor.
�

       2.  Starting_the_Editor

       The following command line forms are supported:

       stevie [file ...]   Edit the specified file(s)

       stevie -t tag       Start at the location of the given tag

       stevie + file       Edit file starting at end

       stevie +n file      Edit file starting a line number 'n'

       stevie +/pat file   Edit file starting at pattern 'pat'

       If multiple files are given on the command line  (using  the
       first  form),  the  ":n" command goes to the next file, ":N"
       goes backward in the list, and ":rew" can be used to  rewind
       back to the start of the file list.


       3.  Set_Command_Options

       The ":set" command works as usual to  set  parameters.  Each
       parameter  has  a  long  and  an abbreviated name, either of
       which may be used. Boolean parameters are set as in:

            set showmatch

       or cleared by:

            set noshowmatch

       Numeric parameters are set as in:

            set scroll=5

       Several parameters may be set with a single command:

            set novb sm report=1

       To see the status of all parameters use ":set  all".  Typing
       ":set"  with  no  arguments  will show only those parameters
       that have been changed.   The  supported  parameters,  their
       names,  abbreviations,  defaults, and descriptions are shown
       below:

       aitabs      Short: aitabs, Default aitabs, Type Boolean
                   When  autoindenting,  STeVIe  duplicates  VI  in
                   padding  the white space at the beginning of the
                   new  line  with  as many tab  characters  as  is
                   possible.   Setting "noaitabs" forces  STeVIe to
                   only use space characters, while autoindenting.


       autoindent  Short: ai, Default: noai, Type: Boolean
                   When in insert mode, start new lines at the same
                   column  as  the  prior  line. Unlike vi, you can
                   backspace over the indentation.
�

       backup      Short: bk, Default: nobk, Type: Boolean
                   Leave a backup on file writes.

       errorbells  Short: eb, Default: noeb, Type: Boolean
                   Ring bell when error messages are shown.

       ignorecase  Short: ic, Default: noic, Type: Boolean
                   Ignore case in string searches.

       lines       Short: lines, Default: lines=25, Type: Numeric
                   Number of physical  lines  on  the  screen.  The
                   default  value  actually  depends  on  the  host
                   machine, but is generally 25.

       list        Short: list, Default: nolist, Type: Boolean
                   Show tabs and newlines graphically.

       modelines   Short: ml, Default: noml, Type: Boolean
                   Enable processing of modelines in files.

       number      Short: nu, Default: nonu, Type: Boolean
                   Display lines on  the  screen  with  their  line
                   numbers.

       report      Short: report, Default: report=5, Type: Numeric
                   Minimum number of lines to report operations on.

       return      Short: cr, Default: cr, Type: Boolean
                   End lines with cr-lf when writing files.

       scroll      Short: scroll, Default: scroll=12, Type: Numeric
                   Number of lines to scroll for ^D & ^U.

       shiftwidth  Short: sw, Default: sw=8, Type: Numeric
                   Amount of space used during the ^D, ^T, >, and <
                   shift operations.   (^D and ^T indent out and in
                   during insert mode.)

       showmatch   Short: sm, Default: nosm, Type: Boolean
                   When a ), }, or ] is typed, show the matching (,
                   {,  or [ if it's on the current screen by moving
                   the cursor there briefly.

       showmode    Short: mo, Default: nomo, Type: Boolean
                   Show on status line when in insert mode.

       tabstop     Short: ts, Default: ts=8, Type: Numeric
                   Number of spaces in a tab.

       terse       Short: terse, Default: noterse, Type: Boolean
                   This option is currently ignored.   It  is  pro-
                   vided only for compatibility with vi.

       tildeop     Short: to, Default: noto, Type: Boolean
                   If set, tilde is an operator.  Otherwise,  tilde
                   acts as normal.
�

       wrapmargin  Short: wm, Default: wm=0, Type: Numeric
                   STeVIe will automatically insert a newline, when
                   it finds a  natural break  point  between  words
                   (space  or  tab  characters) that  occur  within
                   "wm" spaces of the right margin.  To disable the
                   wrapmargin feature, set wm=0.

       wrapscan    Short: ws, Default: ws, Type: Boolean
                   String searches wrap  around  the  ends  of  the
                   file.

       vbell       Short: vb, Default: vb, Type: Boolean
                   Use a visual bell, if possible. (novb for  audi-
                   ble bell)

       The EXINIT environment variable can be used  to  modify  the
       default values on startup as in:

            setenv EXINIT="set sm ts=4"

       The 'backup' parameter, if set, causes the editor to  retain
       a  backup of any files that are written. During file writes,
       a backup is always kept for safety until the write  is  com-
       pleted.  At  that  point,  the 'backup' parameter determines
       whether the backup file is deleted.

       In environments (e.g. OS/2 or TOS) where lines are  normally
       terminated  by CR-LF, the 'return' parameter allows files to
       be written with only a LF terminator (if  the  parameter  is
       cleared).  This parameter is ignored on UNIX systems.

       The 'lines' parameter tells the editor how many lines  there
       are  on  the  screen.  This is useful on systems like the ST
       (or OS/2 machines with an EGA adapter) where various  screen
       resolutions  may  be  used.  By using the 'lines' parameter,
       different screen sizes can be easily handled.
�


       4.  Function_Key_Mapping

       The  "map"  command in STeVIe varies slightly from  the  one 
       used in VI:

            1)  The function keys (and SHIFT-function keys) are the 
       only keys that can be mapped to execute a command macro.  

            2)  The function keys may only be used in command  mode 
       and never during insert mode.

            3)  The command macros may not include any function key 
       in the macro definition.

            4)  The command macros may be up to 91 characters long.  
       The length limitation is due to the limit placed upon the 
       ":" command line.

            5)  Lastly, the "unmap" and "map!" commands from VI are 
       not  implemented.   Provisions for unmapping a function  key 
       are described below.

       4.1  Defining_Macros

       Function keys are represented in the macro definition by the 
       notation fx,  where x is an ASCII number.   A SHIFT-function 
       keys is represented by Fx,  where x is an ASCII number.   By 
       using  the  fx and Fx notations,  macro definitions  may  be 
       placed  into the STeVIe configuration file or listed to  the 
       screen.

       Within  the macro definition,  control characters have to be 
       quoted  with  a  control-V (^V).   This  can  be  confusing.  
       During  insert  mode  and at the colon prompt,  all  control 
       characters have to be quoted, even the control-V!

       Besides being defined in the configuration file,  macros can 
       also be defined at the ":" prompt.


            EXAMPLE 1:  Define function key 1 to scroll the  screen 
       down.   In order to define the following macro at the  colon 
       prompt:

            map f1 ^D

       type the following characters:

            :map f1 ^V^D <RETURN>

       The control-V was necessary to quote the control-D.
�


       5.  Colon_Commands

       Several of the normal 'vi' colon commands are  supported  by
       STEVIE.   Some  commands  may  be  preceded  by a line range
       specification.  For commands that accept a range  of  lines,
       the following address forms are supported:

            addr
            addr + number
            addr - number

       where 'addr' may be one of the following:

            a line number
            a mark (as in 'a or 'b)
            '.' (the current line)
            '$' (the last line)

       An address range of "%" is accepted as  an  abbreviation  of
       "1,$".

       5.1  Mode_Lines

       Mode lines are a little-known, but often useful, feature  of
       vi.   To use this feature, special strings are placed in the
       first or last five lines  in  a  file.   When  the  file  is
       edited,  these  strings are detected and processed as though
       typed as a colon command.  One instance where  this  can  be
       useful  is  to  set  the  "tabstop"  parameter on a per-file
       basis.  The following are examples of mode lines:

            vi:set ts=4 noai:
            ex:45:

       Mode lines are characterized by the string "vi" or "ex" fol-
       lowed  by  a  command  surrounded  by colons. Other text may
       appear on the line, and multiple mode lines may be  present.
       No  guarantee  is made regarding the order in which multiple
       mode lines will be processed.

       The processing of mode lines is enabled by setting the  "ml"
       parameter.  This  should be done in the "EXINIT" environment
       variable, so that mode line processing is enabled as soon as
       the  editor begins.  By default, mode lines are disabled for
       security reasons.
�

       5.2  The_Global_Command

       A limited form of the global command is supported, accepting
       the following command form:

            g/pattern/X

       where X may be either 'd' or 'p' to delete  or  print  lines
       that  match  the  given  pattern.  If a line range is given,
       only those lines are checked for a match with  the  pattern.
       If no range is given, all lines are checked.

       If  the  trailing  command  character  is  omitted,  'p'  is
       assumed.  In this case, the trailing slash is also optional.
       The current version of the editor does not support the  undo
       operation  following  the  deletion of lines with the global
       command.

       5.3  The_Substitute_Command

       The substitute command provides  a  powerful  mechanism  for
       making  more complex substitutions than can be done directly
       from visual mode.  The general form of the command is:

            s/pattern/replacement/g

       Each line in the given range (or the  current  line,  if  no
       range  was  given)  is scanned for the given regular expres-
       sion.  When found, the string that matched  the  pattern  is
       replaced with the given replacement string.  If the replace-
       ment  string  is  null,  each  matching  pattern  string  is
       deleted.

       The trailing 'g' is optional and, if present, indicates that
       multiple  occurrences  of  'pattern' on a line should all be
       replaced.

       Some special sequences are  recognized  in  the  replacement
       string.  The  ampersand  character is replaced by the entire
       pattern that was matched.  For example, the  following  com-
       mand  could be used to put all occurrences of 'foo' or 'bar'
       within double quotes:

            1,$s/foo|bar/"&"/g

       The special sequence "\n" where 'n' is a digit from 1 to  9,
       is  replaced  by  the  string  the matched the corresponding
       parenthesized expression in the pattern. The following  com-
       mand could be used to swap the first two parameters in calls
       to the C function "foo":

            1,$s/foo\(([^,]*),([^,]*),/foo(\2,\1,/g

       Like the global command, substitutions can't be undone  with
       this version of the editor.
�

       5.4  File_Manipulation_Commands

       The following table shows the  supported  file  manipulation
       commands  as  well  as  some other 'ex' commands that aren't
       described elsewhere:

       :w              write the current file
       :wq             write and quit
       :x              write (if necessary) and quit
       ZZ              same as ":x"

       :e file         edit the named file
       :e!             re-edit the current file, discarding changes
       :e #            edit the alternate file

       :w file         write the buffer to the named file
       :x,yw file      write lines x through y to the named file
       :r file         read the named file into the buffer

       :n              edit the next file
       :N              edit the previous file
       :rew            rewind the file list

       :f              show the current file name
       :f name         change the current file name
       :x=             show the line number of address 'x'

       :ta tag         go to the named tag
       ^]              like ":ta" using the current word as the tag

       :help           display a command summary
       :ve             show the version number

       :sh             run an interactive shell
       :!cmd           run a command

       The ":help" command can also be invoked with the <HELP>  key
       on  the  Atari  ST. This actually displays a pretty complete
       summary of the real vi with unsupported  features  indicated
       appropriately.

       The commands above work pretty much like they  do  in  'vi'.
       Most  of  the commands support a '!' suffix (if appropriate)
       to discard any pending changes.


       6.  String_Searches

       String searches are supported, as in vi, accepting the usual
       regular  expression  syntax.  This was done using a modified
       form of Henry Spencer's regular expression library. I  added
       code outside the library to support the '\<' and '\>' exten-
       sions.  The parameter "ignorecase" can be set to ignore case
       in all string searches.
�

       7.  Operators

       The vi operators (d, c, y, !, <, and >) work as true  opera-
       tors.   The tilde command may also be used as an operator if
       the parameter "tildeop"  has  been  set.  By  default,  this
       parameter is not set.


       8.  Tags

       Tags are implemented and a fairly simple version of  'ctags'
       is  supplied  with  the editor. The current version of ctags
       will find functions and macros  following  a  specific  (but
       common) form.  See 'ctags.doc' for a complete discussion.


       9.  System-Specific_Comments

       The following sections provide additional relevant  informa-
       tion for the systems to which STEVIE has been ported.

       9.1  Atari_ST

       9.1.1  TOS  The editor has been tested in all three  resolu-
       tions,  although  low  and  high  res.  are less tested than
       medium.   The 50-line high res. mode is currently not imple-
       mented.

       The  function keys,  as well as SHIFT-function keys,  may be
       mapped by the user to execute command macros.   The function
       keys are disabled in insert mode.

       The arrow keys, as well as the <INSERT>, <HELP>, and  <UNDO>
       keys are all mapped appropriately.

       9.1.2  Minix  The editor  is  pretty  much  the  same  under
       Minix,  but  many  of  the keyboard mappings aren't yet sup-
       ported.

       9.2  UNIX

       The editor has been ported to UNIX System  V  release  3  as
       well as 4.2 BSD.  This was done mainly to get some profiling
       data so I haven't put much effort into doing the  UNIX  ver-
       sion  right.   While the termcap routines are supported, the
       editor is still fairly picky about the capabilities it wants
       and makes little effort to do clever things with less intel-
       ligent terminals.
�

       9.3  OS/2

       This port was done because the editor that  comes  with  the
       OS/2 developer's kit really stinks. Make sure 'ansi' mode is
       on (using the 'ansi'  command).   The  OS/2  console  driver
       doesn't  support  insert/delete line, so STEVIE bypasses the
       driver and makes  the  appropriate  system  calls  directly.
       This  is  all done in the system-specific part of the editor
       so the kludge is at least localized.

       The arrow keys, page up/down and home/end all do what  you'd
       expect. The function keys are hard-coded to some useful mac-
       ros until I can get true support for macros into the editor.
       The current mappings are:

            F1      :N <RETURN>
            F2      :n <RETURN>
            F3      :e # <RETURN>
            F4      :rew <RETURN>
            F5      [[
            F6      ]]
            F7      Convert C declaration to pseudo-english (uses cdecl)
            F8      Convert english-style declaration to C (uses cdecl)
            F9      :x <RETURN>
            F10     :help <RETURN>

            S-F1    :N! <RETURN>
            S-F2    :n! <RETURN>

       The macros for F7 and F8 assume that the "cdecl" program  is
       available.

       9.4  MSDOS

       STEVIE has been ported to MSDOS 3.3 using  the  Microsoft  C
       compiler,  version  5.1.  The keyboard mappings are the same
       as for OS/2.  The only problem with the PC version  is  that
       the inefficiency of the screen update code becomes painfully
       apparent on slower machines.

       The DOS version requires the  use  of  an  extended  console
       driver  that  can  insert and delete lines.  The distributed
       code uses "nansi.sys" which seems to be widely available.

       10.  Configuration_File

       When STEVIE is executed from the desktop, it will attempt to
       load  in commands from a configuration file in  the  default
       directory.   The  configuration  file must be  named  either
       STEVIE.INF  or  VI.INF.   If both files exist, then only the
       STEVIE.INF  file will be read and executed.   The configura-
       tion  file is used to initialize all of the "set"  commands,
       as well as any other colon prompt command.

       EXAMPLE STEVIE.INF FILE:

            set ai nu
            set shiftwidth=4
�

       11.  Missing_Features

         1.  The ability to edit files larger  than  the  available
             memory.   This  isn't a problem on the machines I use,
             but it hits the Minix-PC people pretty hard.

         2.  More "set" options.

         3.  Many others...


       12.  Known_Bugs_and_Problems

         1.  The yank buffer uses statically allocated  memory,  so
             large  yanks  will  fail.  If  a  delete spans an area
             larger than the yank buffer, the program asks for con-
             firmation  before  proceeding.  That  way, if you were
             moving text, you don't get screwed by the limited yank
             buffer.  You  just  have  to  move smaller chunks at a
             time. All the  internal  buffers  (yank,  redo,  etc.)
             need  to  be  reworked to allocate memory dynamically.
             The 'undo' buffer is now dynamically allocated, so any
             change can be undone.

         2.  If you stay in insert mode for a long time, the insert
             buffer  can overflow.  The editor will print a message
             and dump you back into command mode.

         3.  The current version of the substitute and global  com-
             mands  (i.e.  ":s/foo/bar"  or  ":g/foo/d")  can't  be
             undone.  This is due to the current design of the undo
             code.   To undo these commands would generally involve
             unreasonable amounts of memory.

         4.  Several other less bothersome glitches...
�

       13.  Conclusion

       The editor has reached a pretty stable state,  and  performs
       well  on  the  systems  I  use  it on, so I'm pretty much in
       maintenance mode now.  There's still plenty to be done;  the
       screen  update  code  is  still  pretty  inefficient and the
       yank/put code is still primitive.  I'm still  interested  in
       bug  reports,  and I do still add a new feature from time to
       time, but the rate of change is way down now.

       I'd like to thank Tim Thompson for writing the original ver-
       sion  of  the  editor.  His  program was well structured and
       quite readable. Thanks for giving me a  good  base  to  work
       with.   Thanks also to many users of STEVIE who have sent in
       their changes.  Many of the  changes  I've  received  aren't
       portable  to  all  the systems I support, but I'm working to
       get portable  implementations  integrated  into  the  editor
       where possible.

       If you're reading this file, but didn't get the source  code
       for STEVIE, it can be had by sending a disk with return pos-
       tage to the address given below. I can write disks  for  the
       Atari  ST (SS or DS) or MSDOS (360K or 1.2M). Please be sure
       to include the return postage. I don't intend to make  money
       from this program, but I don't want to lose any either.

            Tony Andrews            UUCP: onecom!wldrdg!tony
            5902E Gunbarrel Ave.
            Boulder, CO 80301

�

       Character_Function_Summary

       The following list describes the meaning of  each  character
       that's  used  by  the  editor. In some cases characters have
       meaning in both command  and  insert  mode;  these  are  all
       described.


       ^@      The null character. Not used in any mode. This char-
               acter currently may not be present in the file.

       ^B      Backward one screen.

       ^D      In  command mode,  scroll the window down  one  half 
               screen.   In insert mode,  backtab over and delete a
               shiftwidth  amount  of the  autoindent  space  (only
               works  in  non-white  characters have not  yet  been
               typed on the current line).

       ^E      Scroll the screen up one line.

       ^F      Forward one screen.

       ^G      Same as ":f" command. Displays file information.

       ^H      (Backspace) Moves cursor left one space  in  command
               mode.   In  insert  mode,  erases the last character
               typed.

       ^I      Same as a tab character.

       ^J      Move the cursor down one line.

       ^L      Clear and redraw the screen.

       ^M      (Carriage return) Move to the first non-white  char-
               acter  in  the next line. In insert mode, a carriage
               return opens a new line for input.

       ^N      Move the cursor down a line.

       ^P      Move the cursor up a line.

       ^T      In  insert mode,  tab forward by  shiftwidth.   This
               operation only works,  if non-white text has not yet
               been typed on the current line.

       ^U      Scroll the window up one half screen.

       ^V      Embed a control character into the text file  during
               insert mode.  ^V must be immediately followed by the
               character to be embedded  (null characters cannot be
               embedded, yet).
�

       ^W      Erase  the  last word that was typed  during  insert
               mode.   Can be used repeatedly for all of the  words
               on  the  current line that were entered  during  the 
               current insert session.   Does not work once  insert
               mode is terminated.  This function is similar to ^H,
               except with entire words (as VI defines words).

       ^Y      Scroll the screen down one line.

       ^[      Escape cancels a pending command  in  command  mode,
       ESC     and is used to terminate insert mode.

       ^]      Moves to the tag whose name is given by the word  in
               which the cursor resides.

       ^`      Same as ":e #" if supported (system-dependent).

       SPACE   Move the cursor right on column.

       !       The filter operator always operates on  a  range  of
               lines,  passing the lines as input to a program, and
               replacing them with the output of the  program.  The
               shorthand  command  "!!"  can  be  used  to filter a
               number of lines (specified by  a  preceding  count).
               The  command  "!"  is  replaced  by the last command
               used, so "!!!<RETURN>"  runs  the  given  number  of
               lines through the last specified command.

       $       Move to the end of the current line.

       %       If the cursor rests on a paren '()', brace '{}',  or
               bracket '[]', move to the matching one.

       (       Retreat to the beginning of a sentence.   A sentence
               ends  with  a  . (period),  ! (exclamation),   or  ?
               (question)  and  is followed by either the end of  a
               line or by two spaces.  The following characters are
               ignored  when locating sentences:  (, ), [, ], ", ',
               and  tab  characters.   An empty line  fulfills  the
               requirement of a sentence,  however, the cursor will
               only  be  moved  to the topmost line in a  group  of 
               empty lines.

       )       Advances to the beginning of a sentence. See ( above
               for the definition of a sentence.

       '       (single quote)  Used  to move the cursor to a previ-
               ously  marked position,  as in 'a or 'b.  The cursor
               moves to the start of the marked line.  The  special
               mark  ''  refers  to the "previous context".

       +       Same as carriage return, in command mode.

       ,       (comma)  Reverse of the last t, T, f, or F command.

       -       (dash)  Move to the first non-white character in the
               previous line.

�

       .       Repeat the last edit command.

       /       Start of a forward  string  search  command.  String
               searches may be optionally terminated with a closing
               slash. To search for a slash use '\/' in the  search
               string.

       0       Move to the start of the  current  line.  Also  used
               within counts.

       1-9     Used to add 'count' prefixes to commands.

       :       Prefix character for "ex" commands.

       ;       Repeat last t, T, f, or F command.

       <       The 'left shift' operator.

       >       The 'right shift' operator.

       ?       Same as '/', but search backward.

       A       Append at the end of the current line.

       B       Backward one blank-delimited word.

       C       Change the rest of the current line.

       D       Delete the rest of the current line.

       E       End of the end of a blank-delimited word.

       F       Find a character backward on the current line.

       G       Go to  the  given  line  number  (end  of  file,  by
               default).

       H       Move to the first non-white char. on the top  screen
               line.

       I       Insert before  the  first  non-white  char.  on  the
               current line.

       J       Join two lines.

       L       Move to the first  non-white  char.  on  the  bottom
               screen line.

       M       Move to the first  non-white  char.  on  the  middle
               screen line.

       N       Reverse the last string search.

       O       Open a new line above the current  line,  and  start
               inserting.

       P       Put the yank/delete buffer before the current cursor
               position.
�

       Q       Quit to the ":" prompt.

       R       Replace characters until an  "escape"  character  is
               received.   Similar  to  insert  mode,  but replaces
               instead of inserting.  Typing a newline  in  replace
               mode  is  the  same as in insert mode, but replacing
               continues on the new line.

       T       Reverse search 'up to' the given character.

       U       Restore the current line to  its  state  before  you
               started changing it.

       W       Move forward one blank-delimited word.

       X       Delete one character before the cursor.

       Y       Yank the current line. Same as 'yy'.

       ZZ      Exit from the editor, saving changes if necessary.

       [[      Move backward one C function.

       ]]      Move forward one C function.

       ^       Move to the first non-white on the current line.

       `       Move to the given mark, as with '.  The  distinction
               between the two commands is important when used with
               operators. I support the  difference  correctly.  If
               you  don't know what I'm talking about, don't worry,
               it won't matter to you.

       a       Append text after the cursor.

       b       Back one word.

       c       The change operator.

       d       The delete operator.

       e       Move to the end of a word.

       f       Find a character on the current line.

       h       Move left one column.

       i       Insert text before the cursor.

       j       Move down one line.

       k       Move up one line.

       l       Move right one column.

       m       Set a mark at the current position (e.g. ma or mb).

       n       Repeat the last string search.
�

       o       Open a new line and start inserting text.

       p       Put the yank/delete buffer after the cursor.

       r       Replace a character.

       s       Replace characters.

       t       Move forward  'up to' the  given  character  on  the
               current line.

       u       Undo the last edit.

       w       Move forward one word.

       x       Delete the character under the cursor.

       y       The yank operator.

       z       Redraw the screen with the current line at  the  top
               (zRETURN), the middle (z.), or the bottom (z-).

       {       Retreats  to  the beginning of the  preceding  para-
               graph.   A paragraph is a series of text lines  that
               begins  after  either a completely empty line  or  a 
               line that just contains spaces and tabs.

       |       Move to the column given by the preceding count.

       }       Advance to the beginning of the next paragraph.  See
               { above for the definition of a paragraph.

       ~       Invert the case of the current character (if  alpha)
               and  move  to the right.  If the parameter "tildeop"
               is set, this command functions as an operator.
�

                           STEVIE - User Guide

                                 CONTENTS


        1.  Overview...........................................   1

        2.  Starting the Editor................................   2

        3.  Set Command Options................................   2

        4.  Function Key Mapping...............................   5
            4.1  Defining Macros...............................   5
            4.2  Unmapping Macros..............................   6
            4.3  Listing Macros................................   6

        5.  Colon Commands.....................................   7
            5.1  Mode Lines....................................   7
            5.2  The Global Command............................   8
            5.3  The Substitute Command........................   8
            5.4  File Manipulation Commands....................   9

        6.  String Searches....................................   9

        7.  Operators..........................................  10

        8.  Tags...............................................  10

        9.  System-Specific Comments...........................  10
            9.1  Atari ST......................................  10
            9.2  UNIX..........................................  10
            9.3  OS/2..........................................  11
            9.4  MSDOS.........................................  11

       10.  Configuration File.................................  11

       11.  Missing Features...................................  12

       12.  Known Bugs and Problems............................  12

       13.  Conclusion.........................................  13

       Character Function Summary..............................  14