MOVING THE CURSOR:
k - cursor up    ^F - page forward            /<pattern><CR> - search forward
j - cursor down  ^B - page backward           ?<pattern><CR> - search backward
h - cursor left   w - move forward a "word"   n - repeat the last search
l - cursor right  b - move backward a "word"

ENTERING TEXT:
a - append after the cursor.             Use the <escape> key to return to
i - insert before the cursor.            command mode.
o - open a new line below the cursor.
O - open new line above the cursor.

WRITING AND EXITING:
:w<Enter>  - write the file
:q<Enter>  - exit the file
:q!<Enter> - exit without writing the file
:#<Enter>  - move to a line (e.g., :35<Enter> moves to line 35)

MISCELLANEOUS:
^G - display the file name
J - join two lines (use i<Enter><escape> to split a line)
u - undo the last change (enter . after a 'u' to undo more than one change)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
VI COMMANDS:
       ^A search forward for cursor word
       ^B scroll up by screens
       ^C interrupt an operation (e.g. read, write, search)
       ^D scroll down by half screens (setting count)
       ^E scroll down by lines
       ^F scroll down by screens
       ^G file status
       ^H move left by characters
       ^J move down by lines
       ^L redraw screen
       ^M move down by lines (to first non-blank)
       ^N move down by lines
       ^P move up by lines
       ^R redraw screen
       ^T tag pop
       ^U half page up (set count)
       ^V input a literal character
       ^W move to next screen
       ^Y page up by lines
       ^Z suspend editor
       ^[ <escape> exit input mode, cancel partial commands
       ^\ switch to ex mode
       ^] tag push cursor word
       ^^ switch to previous file
  <space> move right by columns
        ! filter through command(s) to motion
        # number increment/decrement
        $ move to last column
        % move to match
        & repeat substitution
        ' move to mark (to first non-blank)
        ( move back sentence
        ) move forward sentence
        + move down by lines (to first non-blank)
        , reverse last F, f, T or t search
        - move up by lines (to first non-blank)
        . repeat the last command
        / search forward
        0 move to first character
        : ex command
        ; repeat last F, f, T or t search
        < shift lines left to motion
        > shift lines right to motion
        ? search backward
        @ execute buffer
        A append to the line
        B move back bigword
        C change to end-of-line
        D delete to end-of-line
        E move to end of bigword
        F character in line backward search
        G move to line
        H move to count lines from screen top
        I insert before first nonblank
        J join lines
        L move to screen bottom
        M move to screen middle
        N reverse last search
        O insert above line
        P insert before cursor from buffer
        Q switch to ex mode
        R replace characters
        S substitute for the line(s)
        T before character in line backward search
        U Restore the current line
        W move to next bigword
        X delete character before cursor
        Y copy line
       ZZ save file and exit
       [[ move back section
       ]] move forward section
        ^ move to first non-blank
        _ move to first non-blank
        ` move to mark
        a append after cursor
        b move back word
        c change to motion
        d delete to motion
        e move to end of word
        f character in line forward search
        h move left by columns
        i insert before cursor
        j move down by lines
        k move up by lines
        l move right by columns
        m set mark
        n repeat last search
        o append after line
        p insert after cursor from buffer
        r replace character
        s substitute character
        t before character in line forward search
        u undo last change
        w move to next word
        x delete character
        y copy text to motion into a cut buffer
        z reposition the screen
        { move back paragraph
        | move to column
        } move forward paragraph
        ~ reverse case
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
EX COMMANDS:
         ^D: scroll lines
          !: filter lines through commands or run commands
          #: display numbered lines
          &: repeat the last subsitution
          *: execute a buffer
          <: shift lines left
          =: display line number
          >: shift lines right
          @: execute a buffer
     append: append input to a line
 abbreviate: specify an input abbreviation
       args: display file argument list
         bg: background the current screen
     change: change lines to input
         cd: change the current directory
      chdir: change the current directory
       copy: copy lines elsewhere in the file
     cscope: create a set of tags using a cscope command
     delete: delete lines from the file
    display: display buffers, screens or tags
    [Ee]dit: begin editing another file
      [Ee]x: begin editing another file
    exusage: display ex command usage statement
       file: display (and optionally set) file name
         fg: switch the current screen and a backgrounded screen
     global: execute a global command on lines matching an RE
       help: display help statement
     insert: insert input before a line
       join: join lines into a single line
          k: mark a line position
       list: display lines in an unambiguous form
       move: move lines elsewhere in the file
       mark: mark a line position
        map: map input or commands to one or more keys
     mkexrc: write a .exrc file
    [Nn]ext: edit (and optionally specify) the next file
     number: change display to number lines
       open: enter "open" mode (not implemented)
      print: display lines
       perl: run the perl interpreter with the command
     perldo: run the perl interpreter with the command, on each line
   preserve: preserve an edit session for recovery
[Pp]revious: edit the previous file in the file argument list
        put: append a cut buffer to the line
       quit: exit ex/vi
       read: append input from a command or file to the line
    recover: recover a saved file
     resize: grow or shrink the current screen
     rewind: re-edit all the files in the file argument list
          s: substitute on lines matching an RE
     script: run a shell in a screen
        set: set options (use ":set all" to see all options)
      shell: suspend editing and run a shell
     source: read a file of ex commands
       stop: suspend the edit session
    suspend: suspend the edit session
          t: copy lines elsewhere in the file
     [Tt]ag: edit the file containing the tag
    tagnext: move to the next tag
     tagpop: return to the previous group of tags
    tagprev: move to the previous tag
     tagtop: discard all tags
        tcl: run the tcl interpreter with the command
       undo: undo the most recent change
unabbreviate: delete an abbreviation
      unmap: delete an input or command map
          v: execute a global command on lines NOT matching an RE
    version: display the program version information
     visual: enter visual (vi) mode from ex mode
  [Vv]isual: edit another file (from vi mode only)
    viusage: display vi key usage statement
      write: write the file
         wn: write the file and switch to the next file
         wq: write the file and exit
        xit: exit
       yank: copy lines to a cut buffer
          z: display different screens of the file
          ~: replace previous RE with previous replacement string,
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Edit options:
noaltwerase     filec=""        nomodeline      scroll=17       notildeop
autoindent      flash           msgcat="./"     nosearchincr    timeout
autoprint       hardtabs=0      noprint=""      nosecure        nottywerase
noautowrite     noiclower       nonumber        shiftwidth=8    noverbose
backup=""       noignorecase    nooctal         noshowmatch     warn
nobeautify      keytime=6       open            noshowmode      window=35
cedit=""        noleftright     optimize        sidescroll=16   nowindowname
columns=80      lines=36        print=""        noslowopen      wraplen=0
comment         nolisp          prompt          nosourceany     wrapmargin=0
noedcompatible  nolist          readonly        tabstop=8       wrapscan
escapetime=1    lock            noredraw        taglength=0     nowriteany
noerrorbells    magic           remap           tags="tags"
exrc            matchtime=7     report=5        term="xterm"
noextended      mesg            ruler           noterse
cdpath="/usr/src/local/nvi:/tmp"
directory="/tmp"
matchchars="[]{}()<>"
paragraphs="IPLPPPQPP LIpplpipbp"
recdir="/var/tmp/vi.recover"
sections="NHSHH HUnhsh"
shell="/bin/csh"
shellmeta="~{[*?$`'"\"