Cut/Paste Commands:

x              delete one character (destructive backspace)

dw             delete the current word (Note: ndw deletes n numbered words)

dd             delete the current line (Note: ndd deletes n numbered lines)

D              delete all content to the right of the cursor

d$             same as above

:u             undo last command

p,P            paste line starting one line below/above current cursor location

J              combine the contents of two lines

"[a-z]nyy      yank next n lines into named buffer [a-z]

"[a-z]p/P      place the contents of selected buffer below/above the current line

Extensions to the Above Commands:

:3,18d         delete lines 3 through 18

16,25m30       move lines 16 through 25 to after line 30

23,29co62      copy specified lines and place after line 62

Cursor Relocation commands:

:[n]           goto line [n]

shift g        place cursor on last line of text

h/l/j/k        move cursor left, right, down and up

^f/^b          move forward, backward in text, one page

^u/^d          move up, down one half page

$              move to end of line

0              move to beginning of line

Extensions to the Above:

b              move backwards one word (Note: nb moves back n number of words)

e              move to end of current word

(              move to beginning of curent block

)              move to the end of current block

Searching and Substitution commands:

/ [string]     search forward for string

? [string]     search backwards for string

n              repeat last search

N              repeat search in opposite direction

cw             change the contents of the current word, (use ESC to stop

               replacement mode)

c$             Replace all content to the right of cursor (exit replacement

               mode with ESC)

c0             Replace all content to the left of cursor (exit with ESC)

:1,$s/s1/s2/g  (Yow!) global replacement of string1 with string2

r              replace current character with next character typed

Entering the Insert Mode:

i              Begin inserting text at current cursor location

I              Begin inserting text at the beginning of the current line

a              Begin appending text, one character to the right of current

               cursor location

A              Begin appending text at the end of the current line

o/O            Begin entering text one line below\above current line

ESC            Exit insertion mode and return to command mode

Exiting and Entering VI

ZZ             save file and exit VI

:wq            same as above

:e!            return to last saved version of current file

:q             quit without save, (Note :q! is required if changes have been made)

:w             write without exit (:w! to force write)

Fancy Stuff:

:1,10w file            write lines 1 through 10 to file newfile

:340,$w >> file        write lines 340 through the end of the file and append

                       to file newfile

:sh                    escape temporarily to a shell

^d                     return from shell to VI

:![command]            execute UNIX command without leaving VI

:r![command]           read output of command into VI

:r[filename]           read filename into VI

:$r newfile            read in newfile and attach at the end of current document

:r !sort file          read in contents of file after it has been passed through

                       the UNIX sort

:n                     open next file (works with wildcard filenames,

                       ex: vi file*)

:^g                    list current line number

:set number            show line numbers

:set showinsert        show flag ("I") at bottom of screen when in insert mode

:set all               display current values of VI variables

:set ai                set autoindent; after this enter the insert mode and

                       tab, from this point on VI will indent each line to

                       this location.  Use ESC to stop the indentations.

^T                     set the autoindent tab one tab stop to the right

^D                     set the autoindent tab one stop to the left

:set tabstop=n         sets default tab space to number n

>>                     shift contents of line one tab stop to the right

<<                     shift contents of line one tab stop to the left