Using the VI Editor
                                  (McCann)
                         Last Revision: August 1996
                                   
   VI (pronouced "vee-eye") is not the latest, greatest, more feature
   packed UNIX editor. Still, it is something of a standard, as it exists
   on 99% of all UNIX systems. Also, some other programs out there use
   VI's "hjkl" cursor movement key layout.

Starting:

        To begin editing a file with vi, you simply type vi followed
        by the file name: vi loop.pas

   vi clears the screen, puts a column of "~" symbols down the left-hand
   side, and leaves the cursor at the top. The "~" symbols are there to
   indicate end-of-file. You are now in one of vi's two modes -- Command
   mode. Command mode is used for cursor movement, editing, retrieving
   and saving files, etc.

 !!!! If you want to type in text, you need to be in Insert mode !!!!

   To move from Command mode to Insert mode, press "i" (no quotes).
   To move from Insert mode to Command mode, press "ESC" (the Escape
   key).

   NOTE: If your terminal doesn't have an ESC key, or the ESC key doesn't
work, use Ctrl-[ instead.

   Pressing "i" is but one of several ways to get into insert mode, but
   it is the most common. The command list (below) will introduce others.
   Once in insert mode, you can type in your text. Press ENTER at the end
   of each line. Use Backspace to delete to the left of the cursor. If
   you need to move the cursor to another line, or make a change, or
   pretty much anything else, you need to press ESC to get back to
   Command mode first.

Command Mode Command List

   Here is a list of the most common vi commands. Most anything you'd
   ever want to do can be done with one of these. Remember, these are
   only available from Command mode. ('Current line' means the line the
   cursor is on. ^H = Ctrl-h; case is not significant on control
   characters.)

Cursor Movement:

   h  = left, j = down, k = up, l = right
        (the arrow keys often have the same effect)
   0  = move to front of line
   $  = move to end of line
   w  = move forward one word
   b  = move backward one word
   e  = move forward to end of word
   ^F = move forward a screenfull
   ^B = move backward a screenfull
   ^D = move forward half a screenfull
   ^U = move backward half a screenfull
   G  = move to end of file
   #G = move to line numbered #. (Ex: Use 0G to move to top of file.)

Searching:

   n    = repeat last search
   N    = reverse direction of last search
   /pat = move cursor to next occurrance of pattern pat (forward search)
   ?pat = move cursor to previous occurrance of pattern pat (backward search)

Inserting:

   i  = insert before (new text will appear before current cursor
        position) -- leaves you in insert mode
   a  = append (new text appears after current cursor position) -- leaves
        you in insert mode
   A  = append to end of line -- leaves you in insert mode
   o  = open a new line below the current line
   O  = open a new line above the current line
   rx = replace character under cursor with character x
   cwnewESC = change current word to new

Deleting:

   ^H     = erase last character (usually same as backspace)
   dSPACE = delete the character beneath the cursor (SPACE == space bar)
   dw     = delete rest of current word
   d$     = delete from cursor through end of current line
   dd     = delete current line
   #dd    = delete # lines (Ex: 3dd deletes the current line and the two
            following lines.)

Saving & Loading:

   :w      = write the file to the current file name (see also ^G, below)
   :wq     = write the file to the current file name and exit vi when done
   ZZ      = same as :wq
   :q      = just quit vi. Will not work if any changes have been made
   :q!     = quit vi, discarding all changes. Use with caution!
   :w name = save contents to a file named name.
   :r name = bring in the text stored in file name; insert it at this
             position.

Misc:

   u   = undo last change
   .   = repeat last change
   \   = "escapes" a control character 
        (Ex: in insert mode, to insert a ^H into your file, type:
         \^H Also, ^V has a similar effect.)
   ^L  = reprint screen
        (useful if it gets messed up with too many control characters)
   ^G  = show the name of the current file and the # of the current line
   %   = find matching ( or ) or { or }
   #yy = 'yank' # lines, starting with the current line
        (like 'copy' in Windows)
   p   = 'put' those lines just yanked after the current line
        (like 'paste' in Windows)
 
Go to the previous page in this presentationReturn to KLUG Presentations