How to Use the vi Editor


Copyright 1991 by Simon Fraser University. Reprinted with permission.

  The vi editor is available on almost all Unix systems. vi can
  be used from any type of terminal because it does not depend
  on arrow keys and function keys--it uses the standard alphabetic
  keys for commands.

  vi (pronounced "vee-eye") is short for "vi"sual editor.  It
  displays a window into the file being edited that shows 24
  lines of text.  vi is a text editor, not a "what you see is
  what you get" word processor.  vi lets you add, change, and
  delete text, but does not provide such formatting capabilities
  as centering lines or indenting paragraphs.

  This help note explains the basics of vi:

  o opening and closing a file
  o moving around in a file
  o elementary editing

  vi has many other commands and options not described here.  The
  following resources can help you get started using the
  vi editor, and are available at the UW University Book Store:

  o "vi Tutorial."  Specialized Systems Consultants (SSC).
  o "vi Reference."  Specialized Systems Consultants (SSC).
  o "Learning the vi Editor."  Linda Lamb, 1990.


  =====  Starting vi  =====

  You may use vi to open an already existing file by typing

    vi filename

  where "filename" is the name of the existing file.  If the file
  is not in your current directory, you must use the full pathname.

  Or you may create a new file by typing

    vi newname

  where "newname" is the name you wish to give the new file.

  To open a new file called "testvi," enter

    vi testvi

  On-screen, you will see blank lines, each with a tilde (~) at the
  left, and a line at the bottom giving the name and status of
  the new file:

    ~
    ~
    "testvi" [New file]


  =====  vi Modes  =====

  vi has two modes:

  o command mode
  o insert mode

  In command mode, the letters of the keyboard perform editing
  functions (like moving the cursor, deleting text, etc.).  To
  enter command mode, press the escape &<Esc> key.

  In insert mode, the letters you type form words and sentences.
  Unlike many word processors, vi starts up in command mode.


  =====  Entering Text  =====

  In order to begin entering text in this empty file, you must
  change from command mode to insert mode.  To do this, type

    i

  Nothing appears to change, but you are now in insert mode and
  can begin typing text.  In general, vi's commands do not display
  on the screen and do not require the Return key to be pressed.

  Type a few short lines and press &<Return> at the end of each
  line.  If you type a long line, you will notice the vi does
  not word wrap, it merely breaks the line unceremoniously at
  the edge of the screen.

  If you make a mistake, pressing <Backspace> or <Delete>
  may remove the error, depending on your terminal type.


  =====  Moving the Cursor  =====

  To move the cursor to another position, you must be in command
  mode.  If you have just finished typing text, you are still in
  insert mode.  Go back to command mode by pressing <Esc>.  If
  you are not sure which mode you are in, press <Esc> once or
  twice until you hear a beep.  When you hear the beep, you are
  in command mode.

  The cursor is controlled with four keys: h, j, k, l.

  Key        Cursor Movement
  ---        ---------------

  h        left one space
  j        down one line
  k        up one line
  l        right one space

  When you have gone as far as possible in one direction, the
  cursor stops moving and you hear a beep.  For example, you
  cannot use l to move right and wrap around to the next line,
  you must use j to move down a line. See the section entitled
  "Moving Around in a File" for ways to move more quickly through
  a file.


  =====  Basic Editing  =====

  Editing commands require that you be command mode.  Many of
  the editing commands have a different function depending on
  whether they are typed as upper- or lowercase.  Often, editing
  commands can be preceded by a number to indicate a repetition
  of the command.


  ---  Deleting Characters  ---

  To delete a character from a file, move the cursor until it is
  on the incorrect letter, then type

    x

  The character under the cursor disappears.  To remove four
  characters (the one under the cursor and the next three) type

    4x

  To delete the character before the cursor, type

    X (uppercase)


  ---  Deleting Words  ---

  To delete a word, move the cursor to the first letter of the
  word, and type

    dw

  This command deletes the word and the space following it.

  To delete three words type

    3dw


  ---  Deleting Lines  ---

  To delete a whole line, type

    dd

  The cursor does not have to be at the beginning of the line.
  Typing dd deletes the entire line containing the cursor and
  places the cursor at the start of the next line.  To delete
  two lines, type

    2dd

  To delete from the cursor position to the end of the line,
  type

    D (uppercase)


  ---  Replacing Characters  ---

  To replace one character with another:

  1. Move the cursor to the character to be replaced.
  2. Type r
  3. Type the replacement character.

     The new character will appear, and you will still be in
     command mode.


  ---  Replacing Words  ---

  To replace one word with another, move to the start of the
  incorrect word and type

    cw

  The last letter of the word to be replaced will turn into a $.
  You are now in insert mode and may type the replacement.  The
  new text does not need to be the same length as the original.
  Press <Esc> to get back to command mode.  To replace three words,
  type

    3cw


  ---  Replacing Lines  ---

  To change text from the cursor position to the end of the line:

  1. Type C (uppercase).
  2. Type the replacement text.
  3. Press <Esc>.

  ---  Inserting Text  ---

  To insert text in a line:

  1. Position the cursor where the new text should go.
  2. Type i
  3. Enter the new text.

     The text is inserted BEFORE the cursor.

  4. Press <Esc> to get back to command mode.


  ---  Appending Text  ---

  To add text to the end of a line:

  1. Position the cursor on the last letter of the line.
  2. Type a
  3. Enter the new text.

     This adds text AFTER the cursor.

  4. Press <Esc> to get back to command mode.


  ---  Opening a Blank Line  ---

  To insert a blank line below the current line, type

    o (lowercase)

  To insert a blank line above the current line, type

    O (uppercase)


  ---  Joining Lines  ---

  To join two lines together:

  1. Put the cursor on the first line to be joined.
  2. Type J

  To join three lines together:

  1. Put the cursor on the first line to be joined.
  2. Type 3J


  ---  Undoing  ---

  To undo your most recent edit, type

    u

  To undo all the edits on a single line, type

    U (uppercase)

  Undoing all edits on a single line only works as long as the
  cursor stays on that line.  Once you move the cursor off a line,
  you cannot use U to restore the line.


  =====  Moving Around in a File  =====

  There are shortcuts to move more quickly though a file.  All
  these work in command mode.

  Key            Movement
  ---            --------

  w            forward word by word
  b            backward word by word
  $            to end of line
  0 (zero)     to beginning of line
  H            to top line of screen
  M            to middle line of screen
  L            to last line of screen
  G            to last line of file
  1G           to first line of file
  <Control>f   scroll forward one screen
  <Control>b   scroll backward one screen
  <Control>d   scroll down one-half screen
  <Control>u   scroll up one-half screen


  ---  Moving by Searching  ---

  To move quickly by searching for text, while in command mode:

  1. Type / (slash).
  2. Enter the text to search for.
  3. Press <Return>.

     The cursor moves to the first occurrence of that text.

  To repeat the search in a forward direction, type

    n

  To repeat the search in a backward direction, type

    N


  =====  Closing and Saving a File  =====

  With vi, you edit a copy of the file, rather than the original
  file.  Changes are made to the original only when you save your
  edits.

  To save the file and quit vi, type

    ZZ

  The vi editor editor is built on an earler Unix text editor
  called ex.  ex commands can be used within vi. ex commands
  begin with a : (colon) and end with a <Return>.  The command
  is displayed on the status line as you type.  Some ex commands
  are useful when saving and closing files.

  To save the edits you have made, but leave vi running and your
  file open:

  1.  Press <Esc>.
  2.  Type :w
  3.  Press <Return>.

  To quit vi, and discard any changes your have made since last
  saving:

  1.  Press <Esc>.
  2.  Type :q!
  3.  Press <Return>.


  =====  Command Summary  =====


  ---  Starting vi  ---

  vi filename    edit a file named "filename"
  vi newfile     create a new file named "newfile"


  ---  Entering Text  ---

  i            insert text left of cursor
  a            append text right of cursor


  ---  Moving the Cursor  ---

  h            left one space
  j            down one line
  k            up one line
  l            right one space


  ---  Basic Editing  ---

  x         delete character
  nx        delete n characters
  X         delete character before cursor
  dw        delete word
  ndw       delete n words
  dd        delete line
  ndd       delete n lines
  D         delete characters from cursor to end of line
  r         replace character under cursor
  cw        replace a word
  ncw       replace n words
  C         change text from cursor to end of line
  o         insert blank line below cursor
               (ready for insertion)
  O         insert blank line above cursor
               (ready for insertion)
  J         join succeeding line to current cursor line
  nJ        join n succeeding lines to current cursor line
  u         undo last change
  U         restore current line


  ---  Moving Around in a File  ---

  w            forward word by word
  b            backward word by word
  $            to end of line
  0 (zero)     to beginning of line
  H            to top line of screen
  M            to middle line of screen
  L            to last line of screen
  G            to last line of file
  1G           to first line of file
  <Control>f   scroll forward one screen
  <Control>b   scroll backward one screen
  <Control>d   scroll down one-half screen
  <Control>u   scroll up one-half screen
  /            search forward for text pattern
  n            repeat last search in same direction
  N            repeat last search in opposite direction


  ---  Closing and Saving a File  ---

  ZZ            save file and then quit
  :w            save file
  :q!            discard changes and quit file