home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / editor / levee / lv.doc next >
Text File  |  1994-01-31  |  29KB  |  860 lines

  1.     Levee.                    A Screen Oriented Editor.
  2.  
  3. NOTE:   If you distribute Levee, you must include this documentation
  4.     in  with  the program.  Any  modification of  Levee  or this
  5.     document is expressly forbidden.  You  may not sell Levee in
  6.     any* form unless you get my written consent.
  7.  
  8.  
  9.     USAGE
  10.     lv [+address] [file ...]
  11.  
  12.     SYNOPSIS
  13.     Levee is a screen oriented  editor based on the  Unix editor
  14.     "vi".  It provides a terse,  powerful way to enter and edit text
  15.     (however,  if you want a word-processor,  you're better off with
  16.     WordStar.)
  17.  
  18.     DESCRIPTION
  19.     Levee is a moded editor.  It operates in 3 modes  -- visual,
  20.     command, and insert.  Most of the editing work is done is visual
  21.     mode,  file reading and  writing is  done in  command mode,  and
  22.     insert mode does what you would expect.
  23.     When you enter Levee,  you may specify  an  address to start
  24.     editing at.  These addresses  are in the same  format as command
  25.     mode addresses,  except that a naked + will put  you at the very
  26.     end of the file.
  27.  
  28.     Levee is copyright (c) 1983-1990 by David L. Parsons.
  29.  
  30.     Levee.                    A Screen Oriented Editor.
  31.     COMMANDS
  32.  
  33.     Command mode commands:
  34.  
  35.         These commands are used for  editing new files,  writing
  36.     modified files,  changing options, doing substitutions,  and
  37.     a subset of  the visual commands.  They take as  input whole
  38.     lines,  terminated  by  return (to execute),  or  escape (to
  39.     abort.)
  40.         
  41.         Command mode is reached by typing ":" or "Q" from visual
  42.     mode.  If you enter command  mode by typing ":",  Levee will
  43.     execute  one  command,   then return  to  visual  mode after
  44.     prompting you  with  "[more]".   If you type anything except
  45.     a space or return, Levee will accept another command, and so
  46.     forth.  If,  however, you enter command mode via "Q",  Levee
  47.     will  remain in  command mode  until  you enter the "visual"
  48.     command.
  49.  
  50.             A NOTE ON COMMAND SYNTAX
  51.         A command may be preceded by an optional line-range.  If
  52.     you do not provide a line-range,  Levee will use the default
  53.     line-range shown by the command.  A line-range is one or two
  54.     address specifications in the following format:
  55.     
  56.         (.|$|'x|#) [ (+|-) (/patt/|?patt?|#) ]
  57.  
  58.             .  => current line.
  59.             $  => last line.
  60.             'x => the line with mark x on it.
  61.             #  => line #.
  62.         
  63.         For example, ".-5,.+5p" will print every line within ten
  64.     lines of the current line.  "$-5" is the fifth line from the
  65.     end of the file,  and "/end/+2"  is the second line past the
  66.     next  occurrence  of  the  pattern "end".  Patterns  may  be
  67.     regular expressions (see below.)
  68.         
  69.         Also,  a naked line-range will  set the current  line to
  70.     the first line in the range  and print all the lines in that
  71.     range. "1,10" sets the current line to 1,  then prints lines
  72.     1 to 10.
  73.  
  74.         If you specify a non-existent line in a range, the comm-
  75.     and will abort and Levee will tell you "bad address".
  76.  
  77.     Regular expressions:
  78.         Levee gives  special meanings to  some characters during
  79.     a pattern match.  The character "." will match any one char,
  80.     the character "*" will match zero or  more occurances of the
  81.     previous char ( so, a* will match 'a','aa','aaa', etc, or it
  82.     will match nothing at all). If a pattern begins with "^", it
  83.     will  only match  at the  beginning of a line,  and patterns
  84.     ending with a "$" will only match at the end of a line.
  85.  
  86.     Levee.                    A Screen Oriented Editor.
  87.         Brackets ('[]') have special meaning as well.  They mean
  88.     match any one of the characters inside the brackets. '[abc]'
  89.     will  match  'a', 'b', or 'c'.  You may  specify  a range of
  90.     characters inside brackets by using a dash (-). '[a-z]' will
  91.     match any lowercase alphabetic character.  If ^ is the first
  92.     character  in  the  bracket,  it means match  any  character
  93.     except those in the brackets.   '[^abc]' will match anything
  94.     except 'a','b', or 'c'.
  95.  
  96.         Backslash takes away  special  meaning  for these chars,
  97.     but '\t' specifies  a  tab,  and \( & \)  delimit  arguments
  98.     inside a pattern (used only by :substitute.)    The patterns
  99.     \< and \> have special  meaning,  too;  they match the start
  100.     and end of alpha-numeric tokens.
  101.  
  102.         If you  turn off  the editor variable  'magic',  none of
  103.     the above  characters will  have special  meaning  inside of
  104.     a pattern (see 'set').
  105.  
  106.         Some example patterns:
  107.  
  108.         ^end$        Find a line that is just 'end'.
  109.         [Ee][Nn][Dd]    Find a 'end', ignoring case.
  110.         [A-Za-z][A-Za-z0-9]* Find the next identifier.
  111.         (\*.*\*)    Find the next one-line pascal
  112.                 comment.
  113.         \<the\>        Find the next occurance of `the'.
  114.  
  115.     Levee.                    A Screen Oriented Editor.
  116.  
  117. ---------------
  118.     args
  119.     show the current argument list, if one exists. The file that you
  120.     are currently editing will be framed by '[' and ']'.
  121.  
  122. ---------------
  123.     (.,.) change
  124.     delete lines, then enter insert mode.
  125.  
  126. ---------------
  127.     (.,.) delete
  128.     delete lines. Deleted lines are stored in a Yank Buffer for
  129.     later putback with "put".
  130.  
  131. ---------------
  132.     edit[!] [file]
  133.     Discard the current file and start editing a new one. If
  134.     changes were made to the current file, you must enter "edit!"
  135.     to force Levee to discard the changes. If you do not specify
  136.     a filename, Levee will try to reedit the current filename.
  137.  
  138.     When Levee reads in a new file, it will tell you how many
  139.     bytes it read in, or [overflow] if the file is larger than the
  140.     internal buffer (currently 32760 bytes.)
  141.  
  142. ---------------
  143.     execmode
  144.     Remain in command mode until you use the "visual" command.
  145.     
  146. ---------------
  147.     file [name]
  148.     Echo what the current filename is, its status, and the current
  149.     line. If you provide it with a name, it will change the filename
  150.     to that.
  151.  
  152. ---------------
  153.     (.) insert
  154.     Insert text above the current line. If you specify a line number,
  155.     Levee will make that the current line, then insert above it.
  156.  
  157.     Commands within insert mode:
  158.         ^W   => back over the last word you entered.
  159.         ^H   => back over one character.
  160.         ^U   => back over all input on this line.
  161.         ^V   => escape the next character typed.
  162.             ^V^H will put a ^H into the file.
  163.         ESC  => exit insert mode.
  164.         ^D   => If at start of line, reduce indentation 'shiftwidth'
  165.             columns.
  166.         ^T   => If at start of line, increase indentation
  167.             'shiftwidth' columns.
  168.  
  169.     When in insert mode, Levee will not allow you to enter any control
  170.     characters except return and tab.  Return ends input on this line and
  171.     opens a new line for input.
  172.  
  173.     Levee.                    A Screen Oriented Editor.
  174. ---------------
  175.     map[!] [key [text]]
  176.     Define/list macros.  There are 3 forms of map:
  177.  
  178.         1) map.         This lists all the active macros.
  179.         2) map (key).   This shows the macro associated with (key),
  180.                 if any.
  181.         3) map (key) (text)
  182.                 This maps (key) to (text). You may map any
  183.                 key except ":" and escape. In the normal
  184.                 form (map), the macro will be effective
  185.                 in visual mode, but in the alternate form,
  186.                 (map!), the macro will be effective in
  187.                 insert and command modes.
  188.  
  189.     For example, if you map!ped return to "hello world", every time
  190.     you entered a return in command or visual mode, the string "hello
  191.     world" would pop up.
  192.  
  193. ---------------
  194.     next [file ...]
  195.     Edit the next file in the arglist, or edit a new arglist. Levee
  196.     takes its initial arglist off the command line when you execute it.
  197.     If "autowrite" is set, Levee will write out the changes to the
  198.     current file before editing the next one.
  199.  
  200. ---------------
  201.     (.) open
  202.     Insert below the current line. Otherwise just like insert.
  203.  
  204. ---------------
  205.     previous
  206.     Edit the previous file in the arglist. Otherwise, like next.
  207.  
  208. ---------------
  209.     (.,.) print
  210.     Display lines without changing the current line.
  211.  
  212. ---------------
  213.     (.) put
  214.     Put the contents of the yank buffer back on the line below
  215.     the current line. If you specify a line, it resets the current
  216.     line, then puts the yank buffer back. The yank buffer is filled
  217.     by the delete, change, or yank commands. Put does not destroy
  218.     the yank buffer, so you may put back text multiple times.
  219.  
  220. ---------------
  221.     quit[!]
  222.     Exit Levee. If you want to discard changes, use "quit!"
  223.  
  224. ---------------
  225.     (.) read [file]
  226.     put the contents of 'file' after the current line.
  227.  
  228. ---------------
  229.     rm file
  230.     Delete 'file' from disk.
  231.  
  232.     Levee.                    A Screen Oriented Editor.
  233. ---------------
  234.     set [option=value]
  235.     Set a tunable variable. Levee has a dozen or so user-definable
  236.     variables which you can twiddle via this command. There are boolean,
  237.     integer, and string variables that you can set. A string or integer
  238.     variable is set by 'set xxx=yyy', a boolean variable is set via
  239.     'set xxx' or 'set noxxx'.
  240.  
  241.     Here are the settable variables (and abbreviations):
  242.         tabsize    (ts)    tab stop.
  243.         shiftwidth    (sw)    columns to shift on ^D, ^T, >>, or <<
  244.         scroll        number of lines to scroll on ^D, ^U
  245.         autoindent    (ai)    supply indentation during insert mode.
  246.         autowrite    (aw)    write out changes before :next, :prev
  247.         autocopy    (ac)    make backup copies of before writing.
  248.         list        display tabs as ^I, end of line as $.
  249.         magic        use regular expressions in searches.
  250.         suffix        if the filename does not have a . in
  251.                 it, supply the suffix. (this is the
  252.                 only string variable.)
  253.         overwrite    (ow)    destroy old file first, then write.
  254.         beautify    (be)    When set, Levee will not allow insert
  255.                 of any control character except tab
  256.                 and return unless you escape it with
  257.                 ctrl-V.
  258.         wrapscan        searches wrap around end of buffer.
  259.         ignorecase    (ic)    Ignore the case of alphabetic characters
  260.                 during searches.
  261.         mapslash        (ST version only) Map '/' in filenames to
  262.                 '\'.  If the environment contains `mapslash'
  263.                 when levee is called, this variable will
  264.                 default to true, otherwise it defaults to
  265.                 false. (See the documentation for the
  266.                 Teeny-shell on how the teeny-shell interprets
  267.                 `mapslash')
  268.         lines (li)        (ST version only) How many lines on the display.
  269.                 This is primarily for running levee through
  270.                 the serial port - put set li=xx into your
  271.                 LVRC for a xx line terminal.
  272.         cols (co)        (ST version only) How many columns on the
  273.                 display.  Like the lines variable, it's for
  274.                 running levee through the serial port.
  275.         
  276.     You may set multiple variables on one line, as in 'set ws noai'.
  277.     To see the current settings of these variables, :set -- without any
  278.     arguments -- will show the current settings.
  279.  
  280.     At startup, Levee looks in the environment variable LVRC for
  281.     a list of variables to set (GEMDOS/MS-DOS). LVRC is one line
  282.     of the form 'option=value ...'. If you have a LVRC defined that
  283.     is 'ts=4 ow nows', Levee will set tabsize to 4, turn on overwrite,
  284.     and turn off wrapscan.
  285.  
  286.     If you are using RMX, Levee looks in the file ":home:r?lvrc"
  287.     for initialization. If you are using Osy/SWOs, Levee looks in the
  288.     file "*.lvrc". The format of these files are different from the
  289.     LVRC variable -- see "source" for more information.
  290.  
  291.     Levee.                    A Screen Oriented Editor.
  292. ---------------
  293.     source file
  294.     Take command mode commands from 'file'. These commands can be
  295.     any legal command, except "visual". If a error happens during
  296.     execution of 'file', Levee abandons that level of source'ing.
  297.  
  298.     In Osy/SWOs, there are a few differences in insert mode from
  299.     within a sourced file. No character has special meaning except a
  300.     line  containing nothing but a period, which terminates insert mode.
  301.     For example:
  302.  
  303.         :commands
  304.         .
  305.         .
  306.         :insert
  307.         blah blah blah blah blah blah
  308.         blah blah blah blah blah blah
  309.         blah blah blah blah blah blah
  310.         .
  311.         :more commands
  312.  
  313.     If you are running Levee under any other operating system,
  314.     you cannot do a insert from a :source file.
  315.  
  316. NOTE:    If you are running Levee on RMX or Osy/SWOs, it will read
  317.     ":home:r?lvrc" or "*.lvrc" at startup. These can consist of any
  318.     legal command mode instruction, just like any other source file.
  319.         
  320. ---------------
  321.     (.,.)substitute(delim)patt(delim)repl(delim)[qcpg]
  322.     (.,.)substitute&
  323.     Search for patt and replace it with repl. Levee will look for
  324.     patt once on each line and replace it with repl. The delimiter
  325.     may be any ascii character.
  326.  
  327.     The pattern is a regular expression, just like a search
  328.     pattern.
  329.  
  330.     You may include parts of the pattern in the replacement string;
  331.     A '&' in the replacement pattern copies in the whole source pattern,
  332.     so if you do a 'sub/this/& and that/g', every instance of 'this'
  333.     will be replaced with 'this and that'.  Also, you may pull parts of
  334.     the pattern out by using the \( and \) argument meta-characters.
  335.     Arguments gotten by \( & \) are put into the replacement string
  336.     everywhere you do a \1..\9 [ \1 is the first argument you set up
  337.     with \( & \) ]. So, if you want to reverse the order of two substrings,
  338.     you can do 'sub/\(string1\)\(string2\)/\2\1/'.
  339.  
  340.     substitute& redoes the last substitution.
  341.  
  342.     Options:
  343.         q,c  => before doing the substitute, display the affected
  344.             line and wait for you to type a character. If you
  345.             type 'y', it will do the substitution. 'q' aborts
  346.             the substitute,  'a'  does the rest of the change
  347.             without prompting, and 'n' does not do it.
  348.         p    => print the affected lines after the change.
  349.         g    => do the change globally. That is, do it for every
  350.             occurence  of patt on a  line,  rather than just
  351.             once.
  352.     
  353.     Levee.                    A Screen Oriented Editor.
  354. ---------------
  355.     undo
  356.     Undo the last modification to the file (except :edit, :next, :rm,
  357.     or :write.) You can only undo the last change to a file -- undo counts
  358.     as a change. :undo followed by :undo does nothing to the file.
  359.  
  360. ---------------
  361.     unmap (key)
  362.     Undefine a macro (see map).
  363.  
  364. ---------------
  365.     visual [list]
  366.     If you entered command mode by "Q" or "execmode", return to
  367.     visual mode.  If you provide an argument list, it also does a
  368.     `:next' on that list.
  369.  
  370. ---------------
  371.     version
  372.     Show which version of levee this is.
  373.  
  374. ---------------
  375.     (.,.) write [file]
  376.     Write lines to a file. If you write the everything to 'file',
  377.     the filename is set to 'file', and if you do not specify a file,
  378.     Levee will write to the filename.
  379.  
  380. ---------------
  381.     (.,.) wq [file]
  382.     Write to a file, then quit.
  383.  
  384. ---------------
  385.     (.,.) yank
  386.     Yank lines from the file into the yank buffer, for later
  387.     putback with "put".
  388.  
  389. ---------------
  390.     xit[!]
  391.     Write changes to the current file, then exit. If there are
  392.     more files in the arglist, use "xit!"
  393.  
  394. ---------------
  395.     ![command]
  396.     Execute command.
  397.  
  398.     Example:
  399.         !ls    => does a 'ls'.
  400.  
  401.     This command is available only under GEMDOS, MSDOS, and RMX.
  402.  
  403. ---------------
  404.     ($)=
  405.     Give the line number of the addressed line. /end/= gives you
  406.     the line number of the next line with a 'end' on it.
  407.  
  408. ---------------
  409.     Levee.                    A Screen Oriented Editor.
  410.     Visual mode commands.
  411.         Visual mode commands move you around  and modify the file.
  412.     There are movement commands to move the cursor by a variety of
  413.     objects.
  414.  
  415.         In the description,  a (#)  means a optional  count.  If a
  416.     command has a optional count,  it will tell you what the count
  417.     does in parenthesis.  A (*) means that the command can be used
  418.     in the delete, yank, and change commands.
  419.  
  420.         Counts are made up by  entering digits.  If you type '45',
  421.     the count will be set to 45. To cancel a count, type ESC.
  422.  
  423.         This section discusses 'whitespace' occasionally.
  424.     Whitespace is tabs, spaces, and end of line.
  425.  
  426.     How the display works.
  427.     
  428.         Characters  are  displayed  on  the  screen  as  you would
  429.     expect,  except that  nonprinting characters are  shown as ^x,
  430.     and tabs  expand to  spaces ( unless you  set the option list,
  431.     then they show as ^I.)  When sitting on a control character or
  432.     tab, the cursor is placed on the FIRST character displayed. If
  433.     you move the cursor to  any other part of them ( via j or k --
  434.     see below), any changes will start at the next character.
  435.     
  436.         Levee  does  not  display a end of  file marker, but lines
  437.     past the end of the file are denoted by ~ lines.
  438.  
  439.         If list is  set,  tabs  display as ^I, and the end of line
  440.     displays as $.
  441.  
  442.         If a  line is too long for the screen,  it will  just dis-
  443.     appear off the end of the screen.
  444.  
  445.         Levee will handle any screen resolution and any monospaced
  446.     font you hand it ( if you are running in low resolution, Levee
  447.     will give you a 25x40 window, for example.)
  448.  
  449.     Levee.                    A Screen Oriented Editor.
  450. ---------------
  451.     ^A
  452.     Show a debugging message at the bottom of the screen. This is not at
  453.     all useful unless you are debugging the editor. Ignore it.
  454.  
  455. ---------------
  456.     (#)^D
  457.     Scroll the screen down a half screen. If a count is specified, scroll
  458.     down the specified number of lines.
  459.  
  460. ---------------
  461.     ^E
  462.     Scroll down 1 line (shorthand for 1^D )
  463.  
  464. ---------------
  465.     ^G
  466.     Show file statistics. Exactly like ':file'.
  467.  
  468. (*)------------
  469.     (#)^H
  470.     Move the cursor left one (count) chars.
  471.  
  472. ---------------
  473.     ^I
  474.     Redraw the screen.
  475.  
  476. (*)------------
  477.     (#)^J
  478.     Move down one (count) lines. When you use ^J and ^K (below) to move
  479.     up or down lines, the cursor will remain in the same column, even if
  480.     it is in the middle of a tabstop or past the end of a line.
  481.  
  482. (*)------------
  483.     (#)^K
  484.     Move up one (count) lines.
  485.  
  486. (*)------------
  487.     (#)^L
  488.     Move right one (count) characters.
  489.  
  490. (*)------------
  491.     (#)^M
  492.     Move to the first nonwhite space on the next line. If a count is specified,
  493.     move to the first nonwhite count lines down.
  494.  
  495.     Levee.                    A Screen Oriented Editor.
  496. ---------------
  497.     (#)^U
  498.     Scroll the screen up a half page. If a count is specified, scroll up
  499.     count lines.
  500.  
  501. ---------------
  502.     ^Y
  503.     Scroll the screen up 1 line (shorthand for 1^U.)
  504.  
  505. ---------------
  506.     (#)a
  507.     Insert text AFTER the cursor. If you give a count, the insertion will
  508.     be repeated count times ( 40i-ESC will give you a line of 40 dashes).
  509.  
  510.     The commands in insert mode are the same for visual and command mode.
  511.  
  512. (*)------------
  513.     (#)b
  514.     Move to the beginning of the last word (the count'th word back).
  515.     A word is a collection of alphanumeric characters (a-z0-9$_#) or
  516.     any other nonwhite character (i.e. anything but space, tab, eoln).
  517.  
  518. ---------------
  519.     c
  520.     Change a object. Change deletes an object, then enters insert mode without
  521.     redrawing the screen. When you tell it the object to be changed, Levee
  522.     puts a '$' on the last character of the object. You cannot change
  523.     backwards.
  524.  
  525.     The object may be any visual mode command marked with a '(*)'. For
  526.     example, 'c4l' will change the next 4 characters on the line to something
  527.     else. (4cl does the same thing -- 4c4l changes the next 16 characters on
  528.     this line.)
  529.  
  530.     'cc' will change whole lines.
  531.  
  532.     When changing, deleting, or yanking a object, it will be placed into
  533.     a yank buffer, where it can be retrieved by the 'p' or 'P' commands.
  534.     
  535. ---------------
  536.     (#)d
  537.     Delete an object. Like 'cc', 'dd' effects whole lines.
  538.  
  539. (*)------------
  540.     (#)e
  541.     Move to the end of the current word.
  542.  
  543. (*)------------
  544.     (#)f(x)
  545.     Find the next (count'th) occurance of a character on the current line.
  546.     For example, if the cursor is sitting on the first character of the
  547.     line 'abcdef', typing "ff" will put the cursor on the 'f'.
  548.     
  549. (*)------------
  550.     (#)h
  551.     Move left one (count) characters. Exactly like ^H.
  552.  
  553.     Levee.                    A Screen Oriented Editor.
  554. ---------------
  555.     (#)i
  556.     Start inserting characters at the cursor. If you specify a count,
  557.     the insertion will be duplicated count times.
  558.  
  559. (*)------------
  560.     (#)j
  561.     Move down one (count) lines. Exactly like ^J.
  562.  
  563. (*)------------
  564.     (#)k
  565.     Move up one (count) lines. Exactly like ^K.
  566.  
  567. (*)------------
  568.     (#)l
  569.     Move right one (count) character. Exactly like ^L.
  570.  
  571. ---------------
  572.     m(x)
  573.     Set the marker (x). There are 26 markers available (a-z). You may
  574.     move to a marker by use of the ' or ` commands.
  575.  
  576. (*)------------
  577.     n
  578.     Find the next occurance of a search pattern. When you do a search with
  579.     a / or ? command, Levee will remember the pattern and the direction you
  580.     searched in. 'n' will search in the same direction for the pattern, 'N'
  581.     searches in the opposite direction.
  582.  
  583. ---------------
  584.     o
  585.     Open a line below the current line for insertion.
  586.  
  587. ---------------
  588.     p
  589.     Put yanked/deleted text back after the cursor. Text is yanked
  590.     by the delete (d,x,X,D), change (c,C,s,S), and yank (y,Y) commands.
  591.  
  592. ---------------
  593.     (#)r(x)
  594.     Replace characters (up to end of line) with (x). '4ra' will change the
  595.     next 4 characters after the cursor into 'aaaa'.
  596.  
  597. ---------------
  598.     (#)s
  599.     change one (count) characters. Shorthand for (#)cl.
  600.  
  601. (*)------------
  602.     (#)t(x)
  603.     Move up to a character on the current line. If you are on the first
  604.     character of the line 'abcdef' and you type 'tf', you will end up sitting
  605.     on the 'e'.
  606.  
  607. ---------------
  608.     u
  609.     Undo last modification. You can undo ANY modification command except
  610.     :edit, :next, :rm, or :write. (Just like :undo).
  611.  
  612.     Levee.                    A Screen Oriented Editor.
  613. (*)------------
  614.     (#)v
  615.     Move back to the very end of the previous (count'th) word.
  616.     See 'b' for the definition of a word.
  617.  
  618. (*)------------
  619.     (#)w
  620.     Move up to the very beginning of the next (count'th) word.
  621.  
  622. ---------------
  623.     (#)x
  624.     Delete one (count) characters forward. Shorthand for (#)dl.
  625.  
  626. ---------------
  627.     y
  628.     Yank an object for later use by put. 'yy' yanks whole lines.
  629.  
  630. ---------------
  631.     A
  632.     Append text at the end of the line. Shorthand for $a.
  633.  
  634. (*)------------
  635.     (#)B
  636.     Move to the beginning of the current word. Exactly like 'b'.
  637.  
  638.     NOTE: this is incorrect. the capitalized word movement commands should,
  639.     and will in the future, be used for movement by space-delimited words.
  640.  
  641. ---------------
  642.     C
  643.     Change to the end of the line. Shorthand for c$.
  644.  
  645. ---------------
  646.     D
  647.     Delete to the end of the line. Shorthand for d$.
  648.  
  649. (*)------------
  650.     (#)F(x)
  651.     Move to the first (count'th) previous occurance of a character on the
  652.     current line. If you are sitting at the end of the line 'abcdef', typing
  653.     "Fa" will move you back to the 'a' at the start of the line.
  654.  
  655. (*)------------
  656.     (#)G
  657.     Goto line. If you specify a count, Levee will move to that line, and if
  658.     there is no count, Levee moves to the absolute end of the file.
  659.  
  660.     To get to the start of the file, type "1G". To the end, just "G".
  661.  
  662. (*)------------
  663.     H
  664.     Move to the first nonwhite character at the top of the screen.
  665.  
  666. ---------------
  667.     I
  668.     Insert at the end of the current line. Shorthand for $i.
  669.  
  670.     Levee.                    A Screen Oriented Editor.
  671. ---------------
  672.     (#)J
  673.     Join two (count+1) lines together. Joining appends the second line at
  674.     the end of the first, putting a space between them. If the first line
  675.     ends in whitespace, Levee will not put in a space.
  676.  
  677. (*)------------
  678.     L
  679.     Move to the last nonwhite character on the last line of the screen.
  680.  
  681. (*)------------
  682.     M
  683.     Move to the first nonwhite character in the middle of the screen.
  684.  
  685. ---------------
  686.     O
  687.     Open a line above the current line. Otherwise works just like 'o'.
  688.  
  689. ---------------
  690.     P
  691.     Put back the yank buffer at the cursor. Otherwise works just like 'p'.
  692.  
  693. ---------------
  694.     Q
  695.     Enter and remain in command mode. Just like the command :exec. To get
  696.     back to visual mode, you must enter the command ':visual'.
  697.  
  698. ---------------
  699.     R
  700.     Replace mode. A limited subset of insert mode that overwrites characters
  701.     up to end of line. All of the normal insert mode commands apply.
  702.     If you overwrite a character, then back over it with ^H,^U, or ^W, it
  703.     will reappear after you exit Replace mode.
  704.  
  705.     Escape exits replace mode.
  706.  
  707.     NOTE: due to a bug, entering a <return> in Replace mode will drop you
  708.     back into visual mode with an error. The replacements you have made
  709.     will remain.
  710.  
  711. ---------------
  712.     S
  713.     Change characters backwards. Shorthand for (#)ch.
  714.  
  715. (*)------------
  716.     (#)T(x)
  717.     Move back to character on current line. If you are on the last character
  718.     of the line 'abcdef', typing "Ta" will move you back to the 'b'.
  719.  
  720. (*)------------
  721.     (#)W
  722.     Move to end of word. Exactly like 'e'.
  723.  
  724. ---------------
  725.     (#)X
  726.     Delete characters backwards. Shorthand for (#)dh.
  727.  
  728.     Levee.                    A Screen Oriented Editor.
  729. ---------------
  730.     Y
  731.     Yank to end of line. Shorthand for y$.
  732.  
  733. ---------------
  734.     ZZ
  735.     Write changes to current file and exit if last file in arglist.
  736.     Exactly like :xit.
  737.  
  738. (*)------------
  739.     (#)$
  740.     Move to end of line. If you give a count, move to the end of the (count-1)
  741.     line down (so 2$ moves you to the end of the next line.).
  742.  
  743. (*)------------
  744.     %
  745.     Find matching bracket, parenthesis, or squiggly bracket. If you are not
  746.     sitting on a '[]{}()', Levee will search forward for one of them on the
  747.     current line, then match whatever it finds.
  748.  
  749. (*)------------
  750.     ^
  751.     Move to the first nonwhite character on the current line.
  752.  
  753. (*)------------
  754.     &
  755.     Redo last substitution command.
  756.  
  757. (*)------------
  758.     (#){
  759.     Move to the beginning of the count'th paragraph back. A paragraph is
  760.     delimited by a blank line.
  761.  
  762. (*)------------
  763.     (#)}
  764.     Move to the end of the count'th paragraph forward.
  765.  
  766. (*)------------
  767.     (#)(
  768.     Move to the beginning of the count'th sentence back. A sentence is
  769.     delimited by a ., a !, or a ? followed by a space, a tab, or end of line.
  770.  
  771. (*)------------
  772.     (#))
  773.     Move to the end of the count'th sentence forward.
  774.  
  775. (*)------------
  776.     (#)-
  777.     Move to the (count'th) previous line, first nonwhite.
  778.  
  779. (*)------------
  780.     (#)+
  781.     Move to the (count'th) next line, first nonwhite.
  782.  
  783. ---------------
  784.     (#)~
  785.     Change the case of the next count characters. Upper case becomes lowercase,
  786.     lowercase becomes uppercase.
  787.  
  788.     Levee.                    A Screen Oriented Editor.
  789. (*)------------
  790.     `(x)
  791.     Move to the exact position of mark (x). There is a special mark for some
  792.     of the visual mode move ment commands -- '' will move you to where you
  793.     were before the last (,),',`,G,/,?,n,N command.
  794.  
  795. ---------------
  796.     :
  797.     Execute one command mode command. When the command is done, it will return
  798.     to visual mode if it produces one line of output, but if it scrolls the
  799.     screen, Levee will prompt [more] before returning to visual mode. If you
  800.     type a : in response to the [more] prompt, Levee will remain in command
  801.     mode for one more command.
  802.  
  803. ---------------
  804.     (#)<(#)
  805.     Shift one (count) objects left. If you specify a second count, Levee will
  806.     shift the object left that many columns -- if you do not, they will be sh
  807.     shifted shiftwidth columns.
  808.  
  809.     This is a nondestructive shift. If the shift would carry past the left
  810.     margin, the objects will be moved up to the left margin but no farther.
  811.  
  812.     Like the other object movement commands, '<<' will affect whole lines.
  813.  
  814. ---------------
  815.     (#)>(#)
  816.     Shift one (count) objects right. Just like <, except it will not shift
  817.     objects past the right margin of the screen. If you do shift an object
  818.     past the right margin of the screen, all of its indent will be removed
  819.     and it will end up by the left margin.
  820.  
  821. ---------------
  822.     .
  823.     Repeat last modification command. (except undo)
  824.  
  825. (*)------------
  826.     ?
  827.     Search for pattern backwards. Escape aborts the search pattern, and a
  828.     empty pattern means search for the last pattern again.
  829.  
  830. (*)------------
  831.     /
  832.     Search for pattern forwards. Otherwise like ?.
  833.  
  834. (*)------------
  835.     (#)|
  836.     Move to specified column. If you don't have a count, move to column 0.
  837.  
  838.     Levee.                    A Screen Oriented Editor.
  839.  
  840.  
  841.     LIMITATIONS
  842.     Levee can only edit files up to 32670 characters long. ^M is used
  843.     as its internal line separator, so inserting ^M will have interesting
  844.     consequences.
  845.  
  846.     BUGS
  847.     Probably infinite.
  848.  
  849.     AUTHOR
  850.             David L. Parsons (orc)
  851.  
  852.         Testing, suggestions, and impractical design goals by:
  853.                 Jim Bolland.
  854.                 John Tainter.
  855.                 John Plocher.
  856.  
  857.     Levee.                    A Screen Oriented Editor.
  858.                 I N D E X
  859.     Are you kidding?
  860.