a. cursor movements (items below are sometimes called objects):
        h - left one character
        l - right one character
        j - down one line
        k - up one line
        w - right one word
        b - back one word
        $ - to the end of line
        0 - to the beginning of the line
        ) - right one sentence
        ( - left one sentence
        } - right one paragraph
        { - left one paragraph
        Ctrl-F - forward one page
        Ctrl-B - back one page
        G - go to (without arguments, go to end of file)
b. deleting:
        d - delete
                then add one of the cursor movement symbols to
                show what should be deleted, i.e.:
                d$ - delete to end of line
                d0 - delete to the beginning of the line
                d} - delete to the end of paragraph
        dd - delete delete (delete the whole line)
        x - delete character cursor is on
c. other basic commands:
        r - replace one character
        ZZ - save and exit (hold down shift and press "z" twice)
        y - yank (copy into temporary buffer)
                then add cursor movement symbol to show what should be
                copied, for example: y) - copy to the end of sentence
        Y - yank line cursor is on
        p - paste below cursor line (deleted or copied text)
        P - paste above cursor line
        u - undo last editing command
        /sometext - search for "sometext"
d. any command can take numeric argument before the name of "object", i.e.:
        5dd - delete 5 lines beginning with cursor line (or) d5d - same
        2dw - delete two words (or) d2w - delete two words
        c3w - change 3 words
        3Ctrl-B - move up three pages
        1G - go to the first line
e. external commands can be performed on the selected text (in lines)
   if command is started with "!", i.e.:
        !}fmt - reformat paragraph to 72 columns
f. command line (sometimes called "ex mode"):
        :
g. from the command line a "set" command can be executed to 
   customize editing environment, i.e.:
        :set all - will show the state of all options
        :set number - will show on the screen numbers of all lines
        :set autoindent   // indent lines automatically as typed
h. from the command line operations can be performed on the range of lines,
   i.e.:
        :18,24 del - delete from line 18 to line 24
        :23,48 copy 17 - block from line 23 to 48 copy to line 17
        :2,17 move 92 - block from line 2 to 17 move to line 92
i. from the command line any external UNIX command can be performed on 
   the range of lines if line range is superseded by "!":
        :11,16! sed -e "s/^/\/\*/" -e "s/$/\*\//"
                (the command above wraps the block of text with
                 "C" style comments - /* text */.  It can be done
                  easier, but this is an example)
        :14,19! sort -r +3
                (sort the table in reverse order by fourth column)
j. file manipulation from the command line:
        :r somefile - read in "somefile"
        :x - save and exit (if file is "Read Only", this command will
                exit without saving)
        :wq - write and quit (same as above)
        :w - write (save) if the file permissions allow it
        :w! - save file even if it is read-only as long as we own it
        :w somefile - save this file as "somefile"
        :q - quit without saving
        :q! - quit without saving if changes were made
k. text input commands (all require "Esc" to terminate):
        i - insert text before the character cursor is on
        I - insert text at the beginning of the line
        a - append (insert text after the character cursor is on)
        A - append text to the end of the line
        c - change (replace previous text with new one)
                takes arguments just like the delete command - it is
                a fast and powerful way of changing original text -
                much more so than typical "overwrite"
        R - start overwriting text
        o - start entering text at the beginning of the new line
            below the cursor
        O - start entering text at the beginning of the new line
            above the cursor
l. if in doubt, press "Esc"
m. One way to get syntax highlighting in vim for C programs:
        :se syntax=c