"vi"
                          The Holy Editor

================================================================================

    --Insertion--                        --Cursor Movement--
    i       (i)nsert before cursor       l or right arrow  (move right)
    a       (a)ppend after cursor        h or left arrow   (move left) 
    I       (I)nsert at end of line      j or down arrow   (move down)
    A       (A)ppend at eoln             k or up arrow     (move up)
    O       (O)pen new line above        $        move to eoln
    o       (o)pen new line below        ^        move to start of line
                                         w        move to next (wo)rd
                                         B        move to previous word
    
    
    --Deletion--                         --Change Text--
    dw      (d)elete (w)ord              cw       (c)hange (w)ord
    dd      (d)elete line                cc       (c)hange line
    D       (D)elete to eoln             R        (R)eplace until ESC
    x       delete char at cursor        r        (r)eplace current char
    X       delete char to left
    dc      (d)elete up and including
            the character 'c'
    
    --Scrolling--                        --Special Commands--
    z       move current line to         >n      indent n spaces
              center of screen           U       (U)ndo all changes
    CTRL-d  scroll (d)own                u       (u)ndo last operation
    CTRL-u  scroll (u)p                  /(str)  forward search for (str)
    CTRL-f  one screen (f)orward         ?(str)  backward search for (str)
    CTRL-b  one screen (b)ack            n       (n)ext occurrence of (str)
    CTRL-l  redraw screen                .       repeat last command
                                         Y       (Y)ank line
                                         p       (p)aste below           
    -- : Commands --                     P       (P)aste above            
    :w  (file)  (w)rite file             ZZ      write & quit (same as :wq)
    :q!         abort (no save)          ESC     cancel command or
    :wq         write & quit                     exit from current mode
    :r (file)   read a file              nG      goto line n
    :sh         shell escape             %       goto next set of () or {}
    :n          goto line n              (       goto start of current
    :! cmd      exec cmd                           sentence
    :s "s" "r"  search for "s"           )       goto end of current 
                replace with "r"                   sentence
    :set (option)  *see below            {       goto start of current 
                                                   paragraph
                                         }       goto end of current
                                                   paragraph
                                         d/str/  find and delete str
                               
    
    ** Note:  many commands like  D,  Y,  dd,  x, etc.  can be preceeded
              by a number to denote how many characters, lines, words,
              etc. are to be modified.
    
    The set command:  I've found the `set` command very helpful.  You should
                      type  :set all  in  vi  to get a list of all the
                      options.  (I've found `set autoindent` to be especially
                      nice when writing programs).