From deke@fido.wps.com Mon Sep 18 11:30:05 1995
Status: O
X-Status: 
Date: Mon, 18 Sep 1995 11:30:02 -0700 (PDT)
From: Deke Motif Nihilson <deke@wps.com>
To: ted@tlg.net
Subject: vi tutorial
Message-ID: <Pine.BSI.3.90.950918112908.450A-100000@fido.wps.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



This is a file, not a program.  Retrieve it, save it, and run vi on it.  -jsq

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*    W e l c o m e   t o   V I   T u t o r    -    V e r s i o n   1 . 2      *
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
                             **************
                             * Lesson 1.0 *
                             **************

     VI is a very powerful editor that has many commands, too many to 
     explain in a tutor such as this.  This tutor is designed to describe
     enough of the commands that you will be able to easily use VI as
     an all-purpose editor. 

     The approximate time required to complete the tutor is 25-30 minutes, 
     depending upon how much time is spent with experimentation.

     It is important to remember that this tutor is set up to teach by
     use.  That means that the student needs to execute the commands to 
     learn them properly.  

     Now, make sure that your Shift-Lock key is NOT depressed and press
     the   j   key enough times to move the cursor so that Lesson 1.1 
     completely fills the screen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.1 *
                             **************
                 =====>>>>> MOVING THE CURSOR <<<<<=====

   ** To move the cursor, press the h,j,k,l keys as indicated. ** 
                                   ^
                                   k
                             < h       l >
                                   j
                                   v
  1. Move the cursor around the screen until you are comfortable.

  2. Hold down the down key (j) until it repeats.
---> Now you know how to move to the next lesson.

  3. Using the down key, move to Lesson 1.2.

Note: If you are ever unsure about something you typed, press <ESC> to place
      you in Command Mode.  Then retype the command you wanted.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.2 *
                             **************
              =====>>>>> ENTERING AND EXITING VI <<<<<=====

  !! NOTE: Before executing any of the steps below, read this entire lesson!!

  1. Press the <ESC> key (to make sure you are in Command Mode).

  2. Type      :q! <RETURN>.

---> This exits the editor WITHOUT saving any changes you have made.
     If you want to save the changes and exit type        :wq  <RETURN>

  3. When you see the shell prompt (%) type:    vi tutor.vi <RETURN>.

---> 'vi' means enter the vi editor, 'tutor.vi' is the file you wish to edit.

  4. If you have these steps memorized and are confident, execute steps
     1 through 3 to exit and re-enter the editor.  Then cursor down to 
     Lesson 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.3 *
                             **************
              =====>>>>> TEXT EDITING - DELETION <<<<<=====

** While in Command Mode press  x  to delete the character under the cursor. **

  1. Move the cursor to the line below marked --->.

  2. To fix the errors, move the cursor until it is on top of the
     character to be deleted.

  3. Press the  x  key to delete the unwanted character.

  4. Repeat steps 2 through 4 until the sentence is correct.

---> The ccow jumpedd ovverr thhe mooon.

  5. Now that the line is correct, go on to Lesson 1.4.

NOTE: As you go through this tutor, do not try to memorize, learn by usage.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.4 *
                             **************
             =====>>>>> TEXT EDITING - INSERTION <<<<<=====

         ** While in Command Mode press  i  to insert text. **

  1. Move the cursor to the first line below marked --->.

  2. To make the first line the same as the second, move the cursor on top 
     of the first character AFTER where the text is to be inserted.

  3. Press  i  and type in the necessary additions.

  4. As each error is fixed press <ESC> to return to Command Mode.
     Repeat steps 2 through 4 to correct the sentence.

---> There is text misng this .
---> There is some text missing from this line.

  5. When you are comfortable inserting text move to the summary below.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 1 SUMMARY *
                          ********************

  1. The cursor is moved using either the arrow keys or the h,j,k,l keys.
         h (left)       j (down)       k (up)       l (right)

  2. To enter VI (from the % prompt) type:      % vi FILENAME <RETURN>

  3. To exit VI type:      <ESC>   :q!   <RETURN>
             OR type:      <ESC>   :wq   <RETURN>  to save the changes.

  4. To delete a character under the cursor in Command Mode type:  x

  5. To insert text at the cursor while in Command Mode type:
         i     type in text     <ESC>

NOTE: Pressing <ESC> will place you in Command Mode or will cancel
      an unwanted and partially completed command.

Now continue with Lesson 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.1 *
                             **************
                =====>>>>> DELETION COMMANDS <<<<<=====

            ** Type  dw  to delete to the end of a word. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the beginning of a word that needs to be deleted.
  
  4. Type   dw   to make the word disappear.

  NOTE: The letters dw will not appear on the screen as you type them,
        so if you are unsure what you typed, press  <ESC>  and start over.

---> There are a some words fun that don't belong paper in this sentence.

  5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.2 *
			     **************
              =====>>>>> MORE DELETION COMMANDS <<<<<=====

           ** Type  d$  to delete to the end of the line. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the end of the correct line (AFTER the first . ).

  4. Type    d$    to delete to the end of the line.

---> Somebody typed the end of this line twice. end of this line twice.


  5. Move on to Lesson 2.3 to understand what is happening.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.3 *
			     **************
             =====>>>>> ON COMMANDS AND OBJECTS <<<<<=====

  The format for the  d  delete command is as follows:

         [number]   d   object      OR       d   [number]   object
  Where: 
    number - is how many times to execute the command (optional, default=1).
    d - is the command to delete.
    object - is what the command will operate on (listed below).

  A short list of objects:
    w - from the cursor to the end of the word, including the space.
    e - from the cursor to the end of the word, NOT including the space.
    $ - from the cursor to the end of the line.
    
NOTE:  For the adventurous, pressing just the object while in Command Mode
       without a command will move the cursor as specified in the object list.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.4 *
                             **************
        =====>>>>> AN EXCEPTION TO  'COMMAND-OBJECT' <<<<<=====

               ** Type   dd   to delete a whole line. **

  Due to the frequency of whole line deletion, the designers of VI decided
  it would be easier to simply type two d's in a row to delete a line.

  1. Move the cursor to the second line in the phrase below. 

  2. Type  dd  to delete the line.

  3. Now move to the fourth line.

  4. Type   2dd   (remember  number-command-object) to delete the two lines.

      1)  Roses are red,
      2)  Mud is fun,
      3)  Violets are blue,
      4)  I have a car,
      5)  Clocks tell time,
      6)  Sugar is sweet
      7)  And so are you.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.5 *
                             **************
                 =====>>>>> THE UNDO COMMAND <<<<<=====

   ** Press  u  to undo the last command,   U   to fix a whole line. **

  1. Move the cursor to the line below marked ---> and place it on the
     first error.

  2. Type  x  to delete the unwanted character.

  3. Now type  u  to undo the last command executed.

  4. This time fix all the errors on the line using the  x  command.

  5. Now type a capital  U  to return the line to its original state.

---> Fiix the errors oon thhis line and reeplace them witth undo.

  6. This is a very useful command.  Now move on to the Lesson 2 Summary.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 2 SUMMARY *
                          ********************

  1. To delete from the cursor to the end of a word type:    dw

  2. To delete from the cursor to the end of a line type:    d$

  3. To delete a whole line type:    dd

  4. The format for a command in command mode is:

       [number]   command   object     OR     command   [number]   object
     where:
       number - is how many times to repeat the command
       command - is what to do, such as  d  for delete
       object - is what the command should act upon, such as  w (word),
                $ (to the end of line), etc.

  5. To undo the last action only, type:     u   (lowercase u)
     To undo all the changes on a line type:    U   (capital U)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.1 *
                             **************
                 =====>>>>> THE PUT COMMAND <<<<<=====

       ** Type  p  to put the last deletion after the cursor. **

  1. Move the cursor to the first line in the set below.

  2. Type  dd  to delete the line and store it in VI's buffer.

  3. Move the cursor to the line ABOVE where the deleted line should go.

  4. While in Command Mode, type    p    to replace the line.

  5. Repeat steps 2 through 4 to put all the lines in correct order.

     d) Can you learn too?
     b) Violets are blue,
     c) Intelligence is learned,
     a) Roses are red,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.2 *
                             **************
               =====>>>>> THE REPLACE COMMAND <<<<<=====

  ** Type  r  and a character to replace the character under the cursor. **

  1. Move the cursor to the first line below marked --->.

  2. Move the cursor so that it is on top of the first error.

  3. Type   r   and then the character which should replace the error.

  4. Repeat steps 2 and 3 until the first line is correct.

--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
--->  When this line was typed in, someone pressed some wrong keys!

  5. Now move on to Lesson 3.2.

NOTE: Remember that you should be learning by use, not memorization.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.3 *
                             **************
                =====>>>>> THE CHANGE COMMAND <<<<<=====

           ** To change part or all of a word, type  cw . **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor on the u in lubw.  

  3. Type  cw  and the correct word (in this case, type  'ine'.)

  4. Press <ESC> and move to the next error (the first character to be changed.)

  5. Repeat steps 3 and 4 until the first sentence is the same as the second.

---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command. 

Notice that  cw  not only replaces the word, but also places you in insert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.4 *
                             **************
               =====>>>>> MORE CHANGES USING c <<<<<=====

     ** The change command is used with the same objects as delete. **

  1. The change command works in the same way as delete.  The format is:

       [number]   c   object       OR       c   [number]   object

  2. The objects are also the same, such as   w (word), $ (end of line), etc.

  3. Move to the first line below marked --->.

  4. Move the cursor to the first error.
 
  5. Type  c$  to make the rest of the line like the second and press <ESC>.

---> The end of this line needs some help to make it like the second. 
---> The end of this line needs to be corrected using the  c$  command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 3 SUMMARY *
                          ********************

  1. To replace text that has already been deleted, type   p .  This Puts the
     deleted text AFTER the cursor (if a line was deleted it will go on the
     line below the cursor).

  2. To replace the character under the cursor, type   r   and then the 
     character which will replace the original.

  3. The change command allows you to change the specified object from the
     cursor to the end of the object.  eg. Type  cw  to change from the
     cursor to the end of the word, c$  to change to the end of a line.

  4. The format for change is:
    
         [number]   c   object        OR        c   [number]   object

Now go on to the next lesson.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.1 *
                             **************
             =====>>>>> LOCATION AND FILE STATUS <<<<<=====

  ** Type CTRL-g to show your location in the file and the file status.   
     Type SHIFT-G to move to a line in the file. **

  Note: Read this entire lesson before executing any of the steps!!

  1. Hold down the Ctrl key and press  g .  A status line will appear at the
     bottom of the page with the filename and the line you are on.  Remember
     the line number for Step 3.

  2. Press shift-G to move you to the bottom of the file. 

  3. Type in the number of the line you were on and then shift-G.  This will 
     return you to the line you were on when you first pressed Ctrl-g.
     (When you type in the numbers, they will NOT be displayed on the screen.)

  4. If you feel confident to do this, execute steps 1 through 3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.2 *
                             **************
                =====>>>>> THE SEARCH COMMAND <<<<<=====

     ** Type  /  followed by a phrase to search for the phrase. **

  1. In command mode type the  /  character.  Notice that it and the cursor
     appear at the bottom of the screen as with the  :  command.

  2. Now type 'errroor' <RETURN>.  This is the word you want to search for.

  3. To search for the same phrase again, simply type  n .
     To search for the same phrase in the opposite direction, type  Shift-N .

  4. If you want to search for a phrase in the backwards direction, use the
     command  ?  instead of /.

---> When the search reaches the end of the file it will continue at the start.

  "errroor" is not the way to spell error;  errroor is an error.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.3 *
                             **************
            =====>>>>> MATCHING PARENTHESES SEARCH <<<<<=====

              ** Type  %  to find a matching ),], or } . **

  1. Place the cursor on any (, [, or { in the line below marked --->. 

  2. Now type the  %  character.

  3. The cursor should be on the matching parenthesis or bracket.

  4. Type  %  to move the cursor back to the first bracket (by matching).

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))

Note: This is very useful in debugging a program with unmatched parentheses!



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.4 *
                             **************
              =====>>>>> A WAY TO CHANGE ERRORS <<<<<=====

        ** Type  :s/old/new/g  to substitute 'new' for 'old'. **

  1. Move the cursor to the line below marked --->.

  2. Type  :s/thee/the <RETURN> .  Note that this command only changes the 
     first occurrence on the line.

  3. Now type    :s/thee/the/g     meaning substitute globally on the line.
     This changes all occurrences on the line.

---> thee best time to see thee flowers is in thee spring.

  4. To change every occurrence of a character string between two lines,
     type   :#,#s/old/new/g    where #,# are the numbers of the two lines.
     Type   :%s/old/new/g    to change every occurrence in the whole file.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 4 SUMMARY *
                          ********************

  1. Ctrl-g  displays your location in the file and the file status.
     Shift-G  moves to the end of the file.  A line number followed 
     by  Shift-G  moves to that line number.

  2. Typing  /  followed by a phrase searches FORWARD for the phrase.
     Typing  ?  followed by a phrase searches BACKWARD for the phrase.
     After a search type  n  to find the next occurrence in the same direction
     or  Shift-N  to search in the opposite direction.

  3. Typing  %  while the cursor is on a  (,),[,],{, or }  locates its 
     matching pair.

  4. To substitute new for the first old on a line type    :s/old/new
     To substitute new for all 'old's on a line type       :s/old/new/g
     To substitute phrases between two line #'s type       :#,#s/old/new/g
     To substitute all occurrences in the file type        :%s/old/new/g
     To ask for confirmation each time add 'c'             :%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.1 *
                             **************
          =====>>>>> HOW TO EXECUTE A UNIX COMMAND <<<<<=====

   ** Type  :!  followed by a UNIX command to execute that command. **

  1. Type the familiar command  :  to set the cursor at the bottom of the
     screen.  This allows you to enter a command.

  2. Now type the  !  (exclamation point) character.  This allows you to 
     execute a UNIX shell command.

  3. As an example type   ls   following the !.  This will show you a listing
     of your directory, just as if you were at the  %  prompt.

---> Note:  It is possible to execute any shell command this way.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.2 *
                             **************
              =====>>>>> MORE ON WRITING FILES <<<<<=====

     ** To save the changes made to the file, type  :w FILENAME. **

  1. Type  :!ls  to get a listing of your directory.

  2. Choose a filename that is not already in your area, such as TEST.

  3. Now type:   :w TEST   (where TEST is the filename you chose.)

  4. This saves the whole file  (VI Tutor)  under the name TEST.
     To verify this, type    :!ls   again to see your directory

---> Note that if you were to exit VI and enter again with the filename TEST,
     the file would be an exact copy of the tutor when you saved it.

  5. Now remove the file from your area by typing:     :!rm TEST

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.3 *
                             **************
            =====>>>>> A SELECTIVE WRITE COMMAND <<<<<=====

        ** To save part of the file, type   :#,# w FILENAME **

  1. Once again, type    :!ls    to obtain a listing of your directory and
     choose a suitable filename such as TEST.

  2. Move the cursor to the top of this page and type  Ctrl-g  to find the 
     number of that line.  REMEMBER THIS NUMBER!

  3. Now move to the bottom of the page and type  Ctrl-g again.  REMEMBER THIS
     LINE NUMBER ALSO!

  4. To save ONLY a section to a file, type   :#,# w TEST   where #,# are
     the two numbers you remembered (top,bottom) and TEST is your filename.

  5. Again, see that the file is there with  :!ls  but DO NOT remove it.      

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.4 *
                             **************
           =====>>>>> RETRIEVING AND MERGING FILES <<<<<=====

       ** To insert the contents of a file, type   :r FILENAME **

  1. Type   :!ls   to make sure your TEST filename is present from before.

  2. Place the cursor at the top of this page.

NOTE:  After executing Step 3 you will see Lesson 5.3.  Then move DOWN to
       this lesson again.

  3. Now retrieve your TEST file using the command   :r TEST   where TEST is 
     the name of the file.  

NOTE:  The file you retrieve is placed starting where the cursor is located.

  4. To verify that a file was retrieved, cursor back and notice that there 
     are now two copies of Lesson 5.3, the original and the file version. 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 5 SUMMARY *
                          ********************

  1.  :!command  executes a unix system command.

      Some useful examples are:
          :!ls  -  shows a directory listing of your area.
          :!rm FILENAME  -  removes file FILENAME from your area.

  2.  :w FILENAME  writes the current VI file to disk with name FILENAME.

  3.  :#,# FILENAME  saves the lines # through # in file FILENAME.

  4.  :r FILENAME  retrieves disk file FILENAME and inserts it into the
      current file following the cursor position.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.1 *
                             **************
                 =====>>>>> THE OPEN COMMAND <<<<<=====

 ** Type  o  to open a line below the cursor and place you in insert mode. **

  1. Move the cursor to the line below marked --->.

  2. Type  o (lowercase) to open up a line BELOW the cursor and place you in
     insert mode.

  3. Now copy the line marked ---> and press <ESC> to exit insert mode.

---> After typing  o  the cursor is placed on the open line in insert mode.

  4. To open up a line ABOVE the cursor, simply type a capital  O , rather
     than a lowercase  o.  Try this on the line below.
Open up a line above this by typing Shift-O while the cursor is on this line.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.2 *
                             **************
                =====>>>>> THE APPEND COMMAND <<<<<=====

             ** Type  a  to insert text AFTER the cursor. **

  1. Move the cursor to the end of the first line below marked ---> by 
     typing  $  in Command mode.

  2. Type an  a  (lowercase) to append text AFTER the character under the
     cursor.  (Uppercase  A  appends to the end of the line.)

Note: This avoids typing  i , the last character, the text to insert, <ESC>,
      cursor-right, and finally, x , just to append to the end of a line!

  3. Now complete the first line.  Note also that append is exactly the same
     as insert mode, except for the location where text is inserted.

---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.3 *
                             **************
            =====>>>>> ANOTHER VERSION OF REPLACE <<<<<=====

      ** Type a capital  R  to replace more than one character. **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor at the beginning of the first word that is different
     from the second line marked ---> (the word 'last').

  3. Now type  R  and replace the remainder of the text on the first line by
     typing over the old text to make the first line the same as the second.

---> To make the first line the same as the last on this page use the keys.
---> To make the first line the same as the second, type R and the new text.

  4. Note that when you press <ESC> to exit, any unaltered text remains.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.4 *
                             **************
            =====>>>>> SET ENVIRONMENT VARIABLE <<<<<=====

      ** Change environment so a search or substitute ignores case **


  1. Search for 'ignore' by entering: 
     /ignore
     Repeat several times by hitting the n key

  2. Set the 'ic' (Ignore case) variable by typing: 
     :set ic

  3. Now search for 'ignore' again by entering: n
     Repeat search several more times by hitting the n key




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 6 SUMMARY *
                          ********************

  1. Typing  o  opens a line BELOW the cursor and places the cursor on the open
     line in insert mode.
     Typing a capital  O  opens the line ABOVE the line the cursor is on.

  2. Type an  a  to insert text AFTER the character the cursor is on.
     Typing a capital  A  automatically appends text to the end of the line. 

  3. Typing a capital  R  enters replace mode until  <ESC>  is pressed to exit.

  4. Typing ":set xxx" sets the environment variable "xxx"







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This concludes the VI Tutor.  It was intended to give a brief overview of
  the VI editor, just enough to allow you to use the editor fairly easily.
  It is far from complete as VI has many many more commands.

  For more information on UNIX and the VI editor please refer to:

      UNIX Primer Plus, by Mitchell Waite, Donald Martin, and Stephen Prata,
        Howard W. Sams & Co., Inc.  (Indianapolis, Indiana)  1985

      UNIX and XENIX  A Step-By-Step Guide, by Douglas Topham and Hai Truong,
        Brady Communications Company (Bowie, Maryland)  1985

  Or read the on-line manuals: 'man vi'    or    'man ex'

  This tutorial was written by Michael C. Pierce and Robert K. Ware,
  Colorado School of Mines using ideas supplied by Charles Smith,
  Colorado State University.

  E-mail: bware@mines.colorado.edu.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@(#) CSM SCCS: /u/sys/src/usr/local/bin/vitutor/SCCS/s.tutor.vi 1.11 91/06/12 15:06:35


From deke@fido.wps.com Mon Sep 18 11:30:47 1995
Status: O
X-Status: 
Date: Mon, 18 Sep 1995 11:30:45 -0700 (PDT)
From: Deke Motif Nihilson <deke@wps.com>
To: nick@tlg.net
Subject: vi tutorial
Message-ID: <Pine.BSI.3.90.950918113009.450B-100000@fido.wps.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


This is a file, not a program.  Retrieve it, save it, and run vi on it.  -jsq

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*    W e l c o m e   t o   V I   T u t o r    -    V e r s i o n   1 . 2      *
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
                             **************
                             * Lesson 1.0 *
                             **************

     VI is a very powerful editor that has many commands, too many to 
     explain in a tutor such as this.  This tutor is designed to describe
     enough of the commands that you will be able to easily use VI as
     an all-purpose editor. 

     The approximate time required to complete the tutor is 25-30 minutes, 
     depending upon how much time is spent with experimentation.

     It is important to remember that this tutor is set up to teach by
     use.  That means that the student needs to execute the commands to 
     learn them properly.  

     Now, make sure that your Shift-Lock key is NOT depressed and press
     the   j   key enough times to move the cursor so that Lesson 1.1 
     completely fills the screen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.1 *
                             **************
                 =====>>>>> MOVING THE CURSOR <<<<<=====

   ** To move the cursor, press the h,j,k,l keys as indicated. ** 
                                   ^
                                   k
                             < h       l >
                                   j
                                   v
  1. Move the cursor around the screen until you are comfortable.

  2. Hold down the down key (j) until it repeats.
---> Now you know how to move to the next lesson.

  3. Using the down key, move to Lesson 1.2.

Note: If you are ever unsure about something you typed, press <ESC> to place
      you in Command Mode.  Then retype the command you wanted.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.2 *
                             **************
              =====>>>>> ENTERING AND EXITING VI <<<<<=====

  !! NOTE: Before executing any of the steps below, read this entire lesson!!

  1. Press the <ESC> key (to make sure you are in Command Mode).

  2. Type      :q! <RETURN>.

---> This exits the editor WITHOUT saving any changes you have made.
     If you want to save the changes and exit type        :wq  <RETURN>

  3. When you see the shell prompt (%) type:    vi tutor.vi <RETURN>.

---> 'vi' means enter the vi editor, 'tutor.vi' is the file you wish to edit.

  4. If you have these steps memorized and are confident, execute steps
     1 through 3 to exit and re-enter the editor.  Then cursor down to 
     Lesson 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.3 *
                             **************
              =====>>>>> TEXT EDITING - DELETION <<<<<=====

** While in Command Mode press  x  to delete the character under the cursor. **

  1. Move the cursor to the line below marked --->.

  2. To fix the errors, move the cursor until it is on top of the
     character to be deleted.

  3. Press the  x  key to delete the unwanted character.

  4. Repeat steps 2 through 4 until the sentence is correct.

---> The ccow jumpedd ovverr thhe mooon.

  5. Now that the line is correct, go on to Lesson 1.4.

NOTE: As you go through this tutor, do not try to memorize, learn by usage.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.4 *
                             **************
             =====>>>>> TEXT EDITING - INSERTION <<<<<=====

         ** While in Command Mode press  i  to insert text. **

  1. Move the cursor to the first line below marked --->.

  2. To make the first line the same as the second, move the cursor on top 
     of the first character AFTER where the text is to be inserted.

  3. Press  i  and type in the necessary additions.

  4. As each error is fixed press <ESC> to return to Command Mode.
     Repeat steps 2 through 4 to correct the sentence.

---> There is text misng this .
---> There is some text missing from this line.

  5. When you are comfortable inserting text move to the summary below.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 1 SUMMARY *
                          ********************

  1. The cursor is moved using either the arrow keys or the h,j,k,l keys.
         h (left)       j (down)       k (up)       l (right)

  2. To enter VI (from the % prompt) type:      % vi FILENAME <RETURN>

  3. To exit VI type:      <ESC>   :q!   <RETURN>
             OR type:      <ESC>   :wq   <RETURN>  to save the changes.

  4. To delete a character under the cursor in Command Mode type:  x

  5. To insert text at the cursor while in Command Mode type:
         i     type in text     <ESC>

NOTE: Pressing <ESC> will place you in Command Mode or will cancel
      an unwanted and partially completed command.

Now continue with Lesson 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.1 *
                             **************
                =====>>>>> DELETION COMMANDS <<<<<=====

            ** Type  dw  to delete to the end of a word. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the beginning of a word that needs to be deleted.
  
  4. Type   dw   to make the word disappear.

  NOTE: The letters dw will not appear on the screen as you type them,
        so if you are unsure what you typed, press  <ESC>  and start over.

---> There are a some words fun that don't belong paper in this sentence.

  5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.2 *
			     **************
              =====>>>>> MORE DELETION COMMANDS <<<<<=====

           ** Type  d$  to delete to the end of the line. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the end of the correct line (AFTER the first . ).

  4. Type    d$    to delete to the end of the line.

---> Somebody typed the end of this line twice. end of this line twice.


  5. Move on to Lesson 2.3 to understand what is happening.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.3 *
			     **************
             =====>>>>> ON COMMANDS AND OBJECTS <<<<<=====

  The format for the  d  delete command is as follows:

         [number]   d   object      OR       d   [number]   object
  Where: 
    number - is how many times to execute the command (optional, default=1).
    d - is the command to delete.
    object - is what the command will operate on (listed below).

  A short list of objects:
    w - from the cursor to the end of the word, including the space.
    e - from the cursor to the end of the word, NOT including the space.
    $ - from the cursor to the end of the line.
    
NOTE:  For the adventurous, pressing just the object while in Command Mode
       without a command will move the cursor as specified in the object list.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.4 *
                             **************
        =====>>>>> AN EXCEPTION TO  'COMMAND-OBJECT' <<<<<=====

               ** Type   dd   to delete a whole line. **

  Due to the frequency of whole line deletion, the designers of VI decided
  it would be easier to simply type two d's in a row to delete a line.

  1. Move the cursor to the second line in the phrase below. 

  2. Type  dd  to delete the line.

  3. Now move to the fourth line.

  4. Type   2dd   (remember  number-command-object) to delete the two lines.

      1)  Roses are red,
      2)  Mud is fun,
      3)  Violets are blue,
      4)  I have a car,
      5)  Clocks tell time,
      6)  Sugar is sweet
      7)  And so are you.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.5 *
                             **************
                 =====>>>>> THE UNDO COMMAND <<<<<=====

   ** Press  u  to undo the last command,   U   to fix a whole line. **

  1. Move the cursor to the line below marked ---> and place it on the
     first error.

  2. Type  x  to delete the unwanted character.

  3. Now type  u  to undo the last command executed.

  4. This time fix all the errors on the line using the  x  command.

  5. Now type a capital  U  to return the line to its original state.

---> Fiix the errors oon thhis line and reeplace them witth undo.

  6. This is a very useful command.  Now move on to the Lesson 2 Summary.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 2 SUMMARY *
                          ********************

  1. To delete from the cursor to the end of a word type:    dw

  2. To delete from the cursor to the end of a line type:    d$

  3. To delete a whole line type:    dd

  4. The format for a command in command mode is:

       [number]   command   object     OR     command   [number]   object
     where:
       number - is how many times to repeat the command
       command - is what to do, such as  d  for delete
       object - is what the command should act upon, such as  w (word),
                $ (to the end of line), etc.

  5. To undo the last action only, type:     u   (lowercase u)
     To undo all the changes on a line type:    U   (capital U)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.1 *
                             **************
                 =====>>>>> THE PUT COMMAND <<<<<=====

       ** Type  p  to put the last deletion after the cursor. **

  1. Move the cursor to the first line in the set below.

  2. Type  dd  to delete the line and store it in VI's buffer.

  3. Move the cursor to the line ABOVE where the deleted line should go.

  4. While in Command Mode, type    p    to replace the line.

  5. Repeat steps 2 through 4 to put all the lines in correct order.

     d) Can you learn too?
     b) Violets are blue,
     c) Intelligence is learned,
     a) Roses are red,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.2 *
                             **************
               =====>>>>> THE REPLACE COMMAND <<<<<=====

  ** Type  r  and a character to replace the character under the cursor. **

  1. Move the cursor to the first line below marked --->.

  2. Move the cursor so that it is on top of the first error.

  3. Type   r   and then the character which should replace the error.

  4. Repeat steps 2 and 3 until the first line is correct.

--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
--->  When this line was typed in, someone pressed some wrong keys!

  5. Now move on to Lesson 3.2.

NOTE: Remember that you should be learning by use, not memorization.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.3 *
                             **************
                =====>>>>> THE CHANGE COMMAND <<<<<=====

           ** To change part or all of a word, type  cw . **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor on the u in lubw.  

  3. Type  cw  and the correct word (in this case, type  'ine'.)

  4. Press <ESC> and move to the next error (the first character to be changed.)

  5. Repeat steps 3 and 4 until the first sentence is the same as the second.

---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command. 

Notice that  cw  not only replaces the word, but also places you in insert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.4 *
                             **************
               =====>>>>> MORE CHANGES USING c <<<<<=====

     ** The change command is used with the same objects as delete. **

  1. The change command works in the same way as delete.  The format is:

       [number]   c   object       OR       c   [number]   object

  2. The objects are also the same, such as   w (word), $ (end of line), etc.

  3. Move to the first line below marked --->.

  4. Move the cursor to the first error.
 
  5. Type  c$  to make the rest of the line like the second and press <ESC>.

---> The end of this line needs some help to make it like the second. 
---> The end of this line needs to be corrected using the  c$  command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 3 SUMMARY *
                          ********************

  1. To replace text that has already been deleted, type   p .  This Puts the
     deleted text AFTER the cursor (if a line was deleted it will go on the
     line below the cursor).

  2. To replace the character under the cursor, type   r   and then the 
     character which will replace the original.

  3. The change command allows you to change the specified object from the
     cursor to the end of the object.  eg. Type  cw  to change from the
     cursor to the end of the word, c$  to change to the end of a line.

  4. The format for change is:
    
         [number]   c   object        OR        c   [number]   object

Now go on to the next lesson.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.1 *
                             **************
             =====>>>>> LOCATION AND FILE STATUS <<<<<=====

  ** Type CTRL-g to show your location in the file and the file status.   
     Type SHIFT-G to move to a line in the file. **

  Note: Read this entire lesson before executing any of the steps!!

  1. Hold down the Ctrl key and press  g .  A status line will appear at the
     bottom of the page with the filename and the line you are on.  Remember
     the line number for Step 3.

  2. Press shift-G to move you to the bottom of the file. 

  3. Type in the number of the line you were on and then shift-G.  This will 
     return you to the line you were on when you first pressed Ctrl-g.
     (When you type in the numbers, they will NOT be displayed on the screen.)

  4. If you feel confident to do this, execute steps 1 through 3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.2 *
                             **************
                =====>>>>> THE SEARCH COMMAND <<<<<=====

     ** Type  /  followed by a phrase to search for the phrase. **

  1. In command mode type the  /  character.  Notice that it and the cursor
     appear at the bottom of the screen as with the  :  command.

  2. Now type 'errroor' <RETURN>.  This is the word you want to search for.

  3. To search for the same phrase again, simply type  n .
     To search for the same phrase in the opposite direction, type  Shift-N .

  4. If you want to search for a phrase in the backwards direction, use the
     command  ?  instead of /.

---> When the search reaches the end of the file it will continue at the start.

  "errroor" is not the way to spell error;  errroor is an error.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.3 *
                             **************
            =====>>>>> MATCHING PARENTHESES SEARCH <<<<<=====

              ** Type  %  to find a matching ),], or } . **

  1. Place the cursor on any (, [, or { in the line below marked --->. 

  2. Now type the  %  character.

  3. The cursor should be on the matching parenthesis or bracket.

  4. Type  %  to move the cursor back to the first bracket (by matching).

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))

Note: This is very useful in debugging a program with unmatched parentheses!



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.4 *
                             **************
              =====>>>>> A WAY TO CHANGE ERRORS <<<<<=====

        ** Type  :s/old/new/g  to substitute 'new' for 'old'. **

  1. Move the cursor to the line below marked --->.

  2. Type  :s/thee/the <RETURN> .  Note that this command only changes the 
     first occurrence on the line.

  3. Now type    :s/thee/the/g     meaning substitute globally on the line.
     This changes all occurrences on the line.

---> thee best time to see thee flowers is in thee spring.

  4. To change every occurrence of a character string between two lines,
     type   :#,#s/old/new/g    where #,# are the numbers of the two lines.
     Type   :%s/old/new/g    to change every occurrence in the whole file.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 4 SUMMARY *
                          ********************

  1. Ctrl-g  displays your location in the file and the file status.
     Shift-G  moves to the end of the file.  A line number followed 
     by  Shift-G  moves to that line number.

  2. Typing  /  followed by a phrase searches FORWARD for the phrase.
     Typing  ?  followed by a phrase searches BACKWARD for the phrase.
     After a search type  n  to find the next occurrence in the same direction
     or  Shift-N  to search in the opposite direction.

  3. Typing  %  while the cursor is on a  (,),[,],{, or }  locates its 
     matching pair.

  4. To substitute new for the first old on a line type    :s/old/new
     To substitute new for all 'old's on a line type       :s/old/new/g
     To substitute phrases between two line #'s type       :#,#s/old/new/g
     To substitute all occurrences in the file type        :%s/old/new/g
     To ask for confirmation each time add 'c'             :%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.1 *
                             **************
          =====>>>>> HOW TO EXECUTE A UNIX COMMAND <<<<<=====

   ** Type  :!  followed by a UNIX command to execute that command. **

  1. Type the familiar command  :  to set the cursor at the bottom of the
     screen.  This allows you to enter a command.

  2. Now type the  !  (exclamation point) character.  This allows you to 
     execute a UNIX shell command.

  3. As an example type   ls   following the !.  This will show you a listing
     of your directory, just as if you were at the  %  prompt.

---> Note:  It is possible to execute any shell command this way.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.2 *
                             **************
              =====>>>>> MORE ON WRITING FILES <<<<<=====

     ** To save the changes made to the file, type  :w FILENAME. **

  1. Type  :!ls  to get a listing of your directory.

  2. Choose a filename that is not already in your area, such as TEST.

  3. Now type:   :w TEST   (where TEST is the filename you chose.)

  4. This saves the whole file  (VI Tutor)  under the name TEST.
     To verify this, type    :!ls   again to see your directory

---> Note that if you were to exit VI and enter again with the filename TEST,
     the file would be an exact copy of the tutor when you saved it.

  5. Now remove the file from your area by typing:     :!rm TEST

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.3 *
                             **************
            =====>>>>> A SELECTIVE WRITE COMMAND <<<<<=====

        ** To save part of the file, type   :#,# w FILENAME **

  1. Once again, type    :!ls    to obtain a listing of your directory and
     choose a suitable filename such as TEST.

  2. Move the cursor to the top of this page and type  Ctrl-g  to find the 
     number of that line.  REMEMBER THIS NUMBER!

  3. Now move to the bottom of the page and type  Ctrl-g again.  REMEMBER THIS
     LINE NUMBER ALSO!

  4. To save ONLY a section to a file, type   :#,# w TEST   where #,# are
     the two numbers you remembered (top,bottom) and TEST is your filename.

  5. Again, see that the file is there with  :!ls  but DO NOT remove it.      

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.4 *
                             **************
           =====>>>>> RETRIEVING AND MERGING FILES <<<<<=====

       ** To insert the contents of a file, type   :r FILENAME **

  1. Type   :!ls   to make sure your TEST filename is present from before.

  2. Place the cursor at the top of this page.

NOTE:  After executing Step 3 you will see Lesson 5.3.  Then move DOWN to
       this lesson again.

  3. Now retrieve your TEST file using the command   :r TEST   where TEST is 
     the name of the file.  

NOTE:  The file you retrieve is placed starting where the cursor is located.

  4. To verify that a file was retrieved, cursor back and notice that there 
     are now two copies of Lesson 5.3, the original and the file version. 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 5 SUMMARY *
                          ********************

  1.  :!command  executes a unix system command.

      Some useful examples are:
          :!ls  -  shows a directory listing of your area.
          :!rm FILENAME  -  removes file FILENAME from your area.

  2.  :w FILENAME  writes the current VI file to disk with name FILENAME.

  3.  :#,# FILENAME  saves the lines # through # in file FILENAME.

  4.  :r FILENAME  retrieves disk file FILENAME and inserts it into the
      current file following the cursor position.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.1 *
                             **************
                 =====>>>>> THE OPEN COMMAND <<<<<=====

 ** Type  o  to open a line below the cursor and place you in insert mode. **

  1. Move the cursor to the line below marked --->.

  2. Type  o (lowercase) to open up a line BELOW the cursor and place you in
     insert mode.

  3. Now copy the line marked ---> and press <ESC> to exit insert mode.

---> After typing  o  the cursor is placed on the open line in insert mode.

  4. To open up a line ABOVE the cursor, simply type a capital  O , rather
     than a lowercase  o.  Try this on the line below.
Open up a line above this by typing Shift-O while the cursor is on this line.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.2 *
                             **************
                =====>>>>> THE APPEND COMMAND <<<<<=====

             ** Type  a  to insert text AFTER the cursor. **

  1. Move the cursor to the end of the first line below marked ---> by 
     typing  $  in Command mode.

  2. Type an  a  (lowercase) to append text AFTER the character under the
     cursor.  (Uppercase  A  appends to the end of the line.)

Note: This avoids typing  i , the last character, the text to insert, <ESC>,
      cursor-right, and finally, x , just to append to the end of a line!

  3. Now complete the first line.  Note also that append is exactly the same
     as insert mode, except for the location where text is inserted.

---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.3 *
                             **************
            =====>>>>> ANOTHER VERSION OF REPLACE <<<<<=====

      ** Type a capital  R  to replace more than one character. **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor at the beginning of the first word that is different
     from the second line marked ---> (the word 'last').

  3. Now type  R  and replace the remainder of the text on the first line by
     typing over the old text to make the first line the same as the second.

---> To make the first line the same as the last on this page use the keys.
---> To make the first line the same as the second, type R and the new text.

  4. Note that when you press <ESC> to exit, any unaltered text remains.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.4 *
                             **************
            =====>>>>> SET ENVIRONMENT VARIABLE <<<<<=====

      ** Change environment so a search or substitute ignores case **


  1. Search for 'ignore' by entering: 
     /ignore
     Repeat several times by hitting the n key

  2. Set the 'ic' (Ignore case) variable by typing: 
     :set ic

  3. Now search for 'ignore' again by entering: n
     Repeat search several more times by hitting the n key




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 6 SUMMARY *
                          ********************

  1. Typing  o  opens a line BELOW the cursor and places the cursor on the open
     line in insert mode.
     Typing a capital  O  opens the line ABOVE the line the cursor is on.

  2. Type an  a  to insert text AFTER the character the cursor is on.
     Typing a capital  A  automatically appends text to the end of the line. 

  3. Typing a capital  R  enters replace mode until  <ESC>  is pressed to exit.

  4. Typing ":set xxx" sets the environment variable "xxx"







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This concludes the VI Tutor.  It was intended to give a brief overview of
  the VI editor, just enough to allow you to use the editor fairly easily.
  It is far from complete as VI has many many more commands.

  For more information on UNIX and the VI editor please refer to:

      UNIX Primer Plus, by Mitchell Waite, Donald Martin, and Stephen Prata,
        Howard W. Sams & Co., Inc.  (Indianapolis, Indiana)  1985

      UNIX and XENIX  A Step-By-Step Guide, by Douglas Topham and Hai Truong,
        Brady Communications Company (Bowie, Maryland)  1985

  Or read the on-line manuals: 'man vi'    or    'man ex'

  This tutorial was written by Michael C. Pierce and Robert K. Ware,
  Colorado School of Mines using ideas supplied by Charles Smith,
  Colorado State University.

  E-mail: bware@mines.colorado.edu.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@(#) CSM SCCS: /u/sys/src/usr/local/bin/vitutor/SCCS/s.tutor.vi 1.11 91/06/12 15:06:35


From deke@fido.wps.com Tue Sep 19 16:27:49 1995
Status: O
X-Status: 
Date: Tue, 19 Sep 1995 16:27:48 -0700 (PDT)
From: Deke Motif Nihilson <deke@wps.com>
To: fish@tlg.net
Subject: vi tutorial
Message-ID: <Pine.BSI.3.90.950919162659.6673A-100000@fido.wps.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


This is a file, not a program.  Retrieve it, save it, and run vi on it.  -jsq

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*    W e l c o m e   t o   V I   T u t o r    -    V e r s i o n   1 . 2      *
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
                             **************
                             * Lesson 1.0 *
                             **************

     VI is a very powerful editor that has many commands, too many to 
     explain in a tutor such as this.  This tutor is designed to describe
     enough of the commands that you will be able to easily use VI as
     an all-purpose editor. 

     The approximate time required to complete the tutor is 25-30 minutes, 
     depending upon how much time is spent with experimentation.

     It is important to remember that this tutor is set up to teach by
     use.  That means that the student needs to execute the commands to 
     learn them properly.  

     Now, make sure that your Shift-Lock key is NOT depressed and press
     the   j   key enough times to move the cursor so that Lesson 1.1 
     completely fills the screen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.1 *
                             **************
                 =====>>>>> MOVING THE CURSOR <<<<<=====

   ** To move the cursor, press the h,j,k,l keys as indicated. ** 
                                   ^
                                   k
                             < h       l >
                                   j
                                   v
  1. Move the cursor around the screen until you are comfortable.

  2. Hold down the down key (j) until it repeats.
---> Now you know how to move to the next lesson.

  3. Using the down key, move to Lesson 1.2.

Note: If you are ever unsure about something you typed, press <ESC> to place
      you in Command Mode.  Then retype the command you wanted.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.2 *
                             **************
              =====>>>>> ENTERING AND EXITING VI <<<<<=====

  !! NOTE: Before executing any of the steps below, read this entire lesson!!

  1. Press the <ESC> key (to make sure you are in Command Mode).

  2. Type      :q! <RETURN>.

---> This exits the editor WITHOUT saving any changes you have made.
     If you want to save the changes and exit type        :wq  <RETURN>

  3. When you see the shell prompt (%) type:    vi tutor.vi <RETURN>.

---> 'vi' means enter the vi editor, 'tutor.vi' is the file you wish to edit.

  4. If you have these steps memorized and are confident, execute steps
     1 through 3 to exit and re-enter the editor.  Then cursor down to 
     Lesson 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.3 *
                             **************
              =====>>>>> TEXT EDITING - DELETION <<<<<=====

** While in Command Mode press  x  to delete the character under the cursor. **

  1. Move the cursor to the line below marked --->.

  2. To fix the errors, move the cursor until it is on top of the
     character to be deleted.

  3. Press the  x  key to delete the unwanted character.

  4. Repeat steps 2 through 4 until the sentence is correct.

---> The ccow jumpedd ovverr thhe mooon.

  5. Now that the line is correct, go on to Lesson 1.4.

NOTE: As you go through this tutor, do not try to memorize, learn by usage.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 1.4 *
                             **************
             =====>>>>> TEXT EDITING - INSERTION <<<<<=====

         ** While in Command Mode press  i  to insert text. **

  1. Move the cursor to the first line below marked --->.

  2. To make the first line the same as the second, move the cursor on top 
     of the first character AFTER where the text is to be inserted.

  3. Press  i  and type in the necessary additions.

  4. As each error is fixed press <ESC> to return to Command Mode.
     Repeat steps 2 through 4 to correct the sentence.

---> There is text misng this .
---> There is some text missing from this line.

  5. When you are comfortable inserting text move to the summary below.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 1 SUMMARY *
                          ********************

  1. The cursor is moved using either the arrow keys or the h,j,k,l keys.
         h (left)       j (down)       k (up)       l (right)

  2. To enter VI (from the % prompt) type:      % vi FILENAME <RETURN>

  3. To exit VI type:      <ESC>   :q!   <RETURN>
             OR type:      <ESC>   :wq   <RETURN>  to save the changes.

  4. To delete a character under the cursor in Command Mode type:  x

  5. To insert text at the cursor while in Command Mode type:
         i     type in text     <ESC>

NOTE: Pressing <ESC> will place you in Command Mode or will cancel
      an unwanted and partially completed command.

Now continue with Lesson 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.1 *
                             **************
                =====>>>>> DELETION COMMANDS <<<<<=====

            ** Type  dw  to delete to the end of a word. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the beginning of a word that needs to be deleted.
  
  4. Type   dw   to make the word disappear.

  NOTE: The letters dw will not appear on the screen as you type them,
        so if you are unsure what you typed, press  <ESC>  and start over.

---> There are a some words fun that don't belong paper in this sentence.

  5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.2 *
			     **************
              =====>>>>> MORE DELETION COMMANDS <<<<<=====

           ** Type  d$  to delete to the end of the line. **

  1. Press  <ESC>  to make sure you are in Command Mode.

  2. Move the cursor to the line below marked --->.

  3. Move the cursor to the end of the correct line (AFTER the first . ).

  4. Type    d$    to delete to the end of the line.

---> Somebody typed the end of this line twice. end of this line twice.


  5. Move on to Lesson 2.3 to understand what is happening.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     **************
			     * Lesson 2.3 *
			     **************
             =====>>>>> ON COMMANDS AND OBJECTS <<<<<=====

  The format for the  d  delete command is as follows:

         [number]   d   object      OR       d   [number]   object
  Where: 
    number - is how many times to execute the command (optional, default=1).
    d - is the command to delete.
    object - is what the command will operate on (listed below).

  A short list of objects:
    w - from the cursor to the end of the word, including the space.
    e - from the cursor to the end of the word, NOT including the space.
    $ - from the cursor to the end of the line.
    
NOTE:  For the adventurous, pressing just the object while in Command Mode
       without a command will move the cursor as specified in the object list.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.4 *
                             **************
        =====>>>>> AN EXCEPTION TO  'COMMAND-OBJECT' <<<<<=====

               ** Type   dd   to delete a whole line. **

  Due to the frequency of whole line deletion, the designers of VI decided
  it would be easier to simply type two d's in a row to delete a line.

  1. Move the cursor to the second line in the phrase below. 

  2. Type  dd  to delete the line.

  3. Now move to the fourth line.

  4. Type   2dd   (remember  number-command-object) to delete the two lines.

      1)  Roses are red,
      2)  Mud is fun,
      3)  Violets are blue,
      4)  I have a car,
      5)  Clocks tell time,
      6)  Sugar is sweet
      7)  And so are you.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 2.5 *
                             **************
                 =====>>>>> THE UNDO COMMAND <<<<<=====

   ** Press  u  to undo the last command,   U   to fix a whole line. **

  1. Move the cursor to the line below marked ---> and place it on the
     first error.

  2. Type  x  to delete the unwanted character.

  3. Now type  u  to undo the last command executed.

  4. This time fix all the errors on the line using the  x  command.

  5. Now type a capital  U  to return the line to its original state.

---> Fiix the errors oon thhis line and reeplace them witth undo.

  6. This is a very useful command.  Now move on to the Lesson 2 Summary.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 2 SUMMARY *
                          ********************

  1. To delete from the cursor to the end of a word type:    dw

  2. To delete from the cursor to the end of a line type:    d$

  3. To delete a whole line type:    dd

  4. The format for a command in command mode is:

       [number]   command   object     OR     command   [number]   object
     where:
       number - is how many times to repeat the command
       command - is what to do, such as  d  for delete
       object - is what the command should act upon, such as  w (word),
                $ (to the end of line), etc.

  5. To undo the last action only, type:     u   (lowercase u)
     To undo all the changes on a line type:    U   (capital U)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.1 *
                             **************
                 =====>>>>> THE PUT COMMAND <<<<<=====

       ** Type  p  to put the last deletion after the cursor. **

  1. Move the cursor to the first line in the set below.

  2. Type  dd  to delete the line and store it in VI's buffer.

  3. Move the cursor to the line ABOVE where the deleted line should go.

  4. While in Command Mode, type    p    to replace the line.

  5. Repeat steps 2 through 4 to put all the lines in correct order.

     d) Can you learn too?
     b) Violets are blue,
     c) Intelligence is learned,
     a) Roses are red,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.2 *
                             **************
               =====>>>>> THE REPLACE COMMAND <<<<<=====

  ** Type  r  and a character to replace the character under the cursor. **

  1. Move the cursor to the first line below marked --->.

  2. Move the cursor so that it is on top of the first error.

  3. Type   r   and then the character which should replace the error.

  4. Repeat steps 2 and 3 until the first line is correct.

--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
--->  When this line was typed in, someone pressed some wrong keys!

  5. Now move on to Lesson 3.2.

NOTE: Remember that you should be learning by use, not memorization.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.3 *
                             **************
                =====>>>>> THE CHANGE COMMAND <<<<<=====

           ** To change part or all of a word, type  cw . **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor on the u in lubw.  

  3. Type  cw  and the correct word (in this case, type  'ine'.)

  4. Press <ESC> and move to the next error (the first character to be changed.)

  5. Repeat steps 3 and 4 until the first sentence is the same as the second.

---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command. 

Notice that  cw  not only replaces the word, but also places you in insert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 3.4 *
                             **************
               =====>>>>> MORE CHANGES USING c <<<<<=====

     ** The change command is used with the same objects as delete. **

  1. The change command works in the same way as delete.  The format is:

       [number]   c   object       OR       c   [number]   object

  2. The objects are also the same, such as   w (word), $ (end of line), etc.

  3. Move to the first line below marked --->.

  4. Move the cursor to the first error.
 
  5. Type  c$  to make the rest of the line like the second and press <ESC>.

---> The end of this line needs some help to make it like the second. 
---> The end of this line needs to be corrected using the  c$  command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 3 SUMMARY *
                          ********************

  1. To replace text that has already been deleted, type   p .  This Puts the
     deleted text AFTER the cursor (if a line was deleted it will go on the
     line below the cursor).

  2. To replace the character under the cursor, type   r   and then the 
     character which will replace the original.

  3. The change command allows you to change the specified object from the
     cursor to the end of the object.  eg. Type  cw  to change from the
     cursor to the end of the word, c$  to change to the end of a line.

  4. The format for change is:
    
         [number]   c   object        OR        c   [number]   object

Now go on to the next lesson.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.1 *
                             **************
             =====>>>>> LOCATION AND FILE STATUS <<<<<=====

  ** Type CTRL-g to show your location in the file and the file status.   
     Type SHIFT-G to move to a line in the file. **

  Note: Read this entire lesson before executing any of the steps!!

  1. Hold down the Ctrl key and press  g .  A status line will appear at the
     bottom of the page with the filename and the line you are on.  Remember
     the line number for Step 3.

  2. Press shift-G to move you to the bottom of the file. 

  3. Type in the number of the line you were on and then shift-G.  This will 
     return you to the line you were on when you first pressed Ctrl-g.
     (When you type in the numbers, they will NOT be displayed on the screen.)

  4. If you feel confident to do this, execute steps 1 through 3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.2 *
                             **************
                =====>>>>> THE SEARCH COMMAND <<<<<=====

     ** Type  /  followed by a phrase to search for the phrase. **

  1. In command mode type the  /  character.  Notice that it and the cursor
     appear at the bottom of the screen as with the  :  command.

  2. Now type 'errroor' <RETURN>.  This is the word you want to search for.

  3. To search for the same phrase again, simply type  n .
     To search for the same phrase in the opposite direction, type  Shift-N .

  4. If you want to search for a phrase in the backwards direction, use the
     command  ?  instead of /.

---> When the search reaches the end of the file it will continue at the start.

  "errroor" is not the way to spell error;  errroor is an error.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.3 *
                             **************
            =====>>>>> MATCHING PARENTHESES SEARCH <<<<<=====

              ** Type  %  to find a matching ),], or } . **

  1. Place the cursor on any (, [, or { in the line below marked --->. 

  2. Now type the  %  character.

  3. The cursor should be on the matching parenthesis or bracket.

  4. Type  %  to move the cursor back to the first bracket (by matching).

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))

Note: This is very useful in debugging a program with unmatched parentheses!



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 4.4 *
                             **************
              =====>>>>> A WAY TO CHANGE ERRORS <<<<<=====

        ** Type  :s/old/new/g  to substitute 'new' for 'old'. **

  1. Move the cursor to the line below marked --->.

  2. Type  :s/thee/the <RETURN> .  Note that this command only changes the 
     first occurrence on the line.

  3. Now type    :s/thee/the/g     meaning substitute globally on the line.
     This changes all occurrences on the line.

---> thee best time to see thee flowers is in thee spring.

  4. To change every occurrence of a character string between two lines,
     type   :#,#s/old/new/g    where #,# are the numbers of the two lines.
     Type   :%s/old/new/g    to change every occurrence in the whole file.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 4 SUMMARY *
                          ********************

  1. Ctrl-g  displays your location in the file and the file status.
     Shift-G  moves to the end of the file.  A line number followed 
     by  Shift-G  moves to that line number.

  2. Typing  /  followed by a phrase searches FORWARD for the phrase.
     Typing  ?  followed by a phrase searches BACKWARD for the phrase.
     After a search type  n  to find the next occurrence in the same direction
     or  Shift-N  to search in the opposite direction.

  3. Typing  %  while the cursor is on a  (,),[,],{, or }  locates its 
     matching pair.

  4. To substitute new for the first old on a line type    :s/old/new
     To substitute new for all 'old's on a line type       :s/old/new/g
     To substitute phrases between two line #'s type       :#,#s/old/new/g
     To substitute all occurrences in the file type        :%s/old/new/g
     To ask for confirmation each time add 'c'             :%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.1 *
                             **************
          =====>>>>> HOW TO EXECUTE A UNIX COMMAND <<<<<=====

   ** Type  :!  followed by a UNIX command to execute that command. **

  1. Type the familiar command  :  to set the cursor at the bottom of the
     screen.  This allows you to enter a command.

  2. Now type the  !  (exclamation point) character.  This allows you to 
     execute a UNIX shell command.

  3. As an example type   ls   following the !.  This will show you a listing
     of your directory, just as if you were at the  %  prompt.

---> Note:  It is possible to execute any shell command this way.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.2 *
                             **************
              =====>>>>> MORE ON WRITING FILES <<<<<=====

     ** To save the changes made to the file, type  :w FILENAME. **

  1. Type  :!ls  to get a listing of your directory.

  2. Choose a filename that is not already in your area, such as TEST.

  3. Now type:   :w TEST   (where TEST is the filename you chose.)

  4. This saves the whole file  (VI Tutor)  under the name TEST.
     To verify this, type    :!ls   again to see your directory

---> Note that if you were to exit VI and enter again with the filename TEST,
     the file would be an exact copy of the tutor when you saved it.

  5. Now remove the file from your area by typing:     :!rm TEST

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.3 *
                             **************
            =====>>>>> A SELECTIVE WRITE COMMAND <<<<<=====

        ** To save part of the file, type   :#,# w FILENAME **

  1. Once again, type    :!ls    to obtain a listing of your directory and
     choose a suitable filename such as TEST.

  2. Move the cursor to the top of this page and type  Ctrl-g  to find the 
     number of that line.  REMEMBER THIS NUMBER!

  3. Now move to the bottom of the page and type  Ctrl-g again.  REMEMBER THIS
     LINE NUMBER ALSO!

  4. To save ONLY a section to a file, type   :#,# w TEST   where #,# are
     the two numbers you remembered (top,bottom) and TEST is your filename.

  5. Again, see that the file is there with  :!ls  but DO NOT remove it.      

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 5.4 *
                             **************
           =====>>>>> RETRIEVING AND MERGING FILES <<<<<=====

       ** To insert the contents of a file, type   :r FILENAME **

  1. Type   :!ls   to make sure your TEST filename is present from before.

  2. Place the cursor at the top of this page.

NOTE:  After executing Step 3 you will see Lesson 5.3.  Then move DOWN to
       this lesson again.

  3. Now retrieve your TEST file using the command   :r TEST   where TEST is 
     the name of the file.  

NOTE:  The file you retrieve is placed starting where the cursor is located.

  4. To verify that a file was retrieved, cursor back and notice that there 
     are now two copies of Lesson 5.3, the original and the file version. 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 5 SUMMARY *
                          ********************

  1.  :!command  executes a unix system command.

      Some useful examples are:
          :!ls  -  shows a directory listing of your area.
          :!rm FILENAME  -  removes file FILENAME from your area.

  2.  :w FILENAME  writes the current VI file to disk with name FILENAME.

  3.  :#,# FILENAME  saves the lines # through # in file FILENAME.

  4.  :r FILENAME  retrieves disk file FILENAME and inserts it into the
      current file following the cursor position.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.1 *
                             **************
                 =====>>>>> THE OPEN COMMAND <<<<<=====

 ** Type  o  to open a line below the cursor and place you in insert mode. **

  1. Move the cursor to the line below marked --->.

  2. Type  o (lowercase) to open up a line BELOW the cursor and place you in
     insert mode.

  3. Now copy the line marked ---> and press <ESC> to exit insert mode.

---> After typing  o  the cursor is placed on the open line in insert mode.

  4. To open up a line ABOVE the cursor, simply type a capital  O , rather
     than a lowercase  o.  Try this on the line below.
Open up a line above this by typing Shift-O while the cursor is on this line.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.2 *
                             **************
                =====>>>>> THE APPEND COMMAND <<<<<=====

             ** Type  a  to insert text AFTER the cursor. **

  1. Move the cursor to the end of the first line below marked ---> by 
     typing  $  in Command mode.

  2. Type an  a  (lowercase) to append text AFTER the character under the
     cursor.  (Uppercase  A  appends to the end of the line.)

Note: This avoids typing  i , the last character, the text to insert, <ESC>,
      cursor-right, and finally, x , just to append to the end of a line!

  3. Now complete the first line.  Note also that append is exactly the same
     as insert mode, except for the location where text is inserted.

---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.3 *
                             **************
            =====>>>>> ANOTHER VERSION OF REPLACE <<<<<=====

      ** Type a capital  R  to replace more than one character. **

  1. Move the cursor to the first line below marked --->.

  2. Place the cursor at the beginning of the first word that is different
     from the second line marked ---> (the word 'last').

  3. Now type  R  and replace the remainder of the text on the first line by
     typing over the old text to make the first line the same as the second.

---> To make the first line the same as the last on this page use the keys.
---> To make the first line the same as the second, type R and the new text.

  4. Note that when you press <ESC> to exit, any unaltered text remains.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             **************
                             * Lesson 6.4 *
                             **************
            =====>>>>> SET ENVIRONMENT VARIABLE <<<<<=====

      ** Change environment so a search or substitute ignores case **


  1. Search for 'ignore' by entering: 
     /ignore
     Repeat several times by hitting the n key

  2. Set the 'ic' (Ignore case) variable by typing: 
     :set ic

  3. Now search for 'ignore' again by entering: n
     Repeat search several more times by hitting the n key




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ********************
                          * LESSON 6 SUMMARY *
                          ********************

  1. Typing  o  opens a line BELOW the cursor and places the cursor on the open
     line in insert mode.
     Typing a capital  O  opens the line ABOVE the line the cursor is on.

  2. Type an  a  to insert text AFTER the character the cursor is on.
     Typing a capital  A  automatically appends text to the end of the line. 

  3. Typing a capital  R  enters replace mode until  <ESC>  is pressed to exit.

  4. Typing ":set xxx" sets the environment variable "xxx"







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This concludes the VI Tutor.  It was intended to give a brief overview of
  the VI editor, just enough to allow you to use the editor fairly easily.
  It is far from complete as VI has many many more commands.

  For more information on UNIX and the VI editor please refer to:

      UNIX Primer Plus, by Mitchell Waite, Donald Martin, and Stephen Prata,
        Howard W. Sams & Co., Inc.  (Indianapolis, Indiana)  1985

      UNIX and XENIX  A Step-By-Step Guide, by Douglas Topham and Hai Truong,
        Brady Communications Company (Bowie, Maryland)  1985

  Or read the on-line manuals: 'man vi'    or    'man ex'

  This tutorial was written by Michael C. Pierce and Robert K. Ware,
  Colorado School of Mines using ideas supplied by Charles Smith,
  Colorado State University.

  E-mail: bware@mines.colorado.edu.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@(#) CSM SCCS: /u/sys/src/usr/local/bin/vitutor/SCCS/s.tutor.vi 1.11 91/06/12 15:06:35



From deke@fido.wps.com Wed Oct 11 20:01:50 1995
Status: O
X-Status: 
Date: Wed, 11 Oct 1995 20:01:49 -0700 (PDT)
From: Deke Motif Nihilson <deke@wps.com>
To: sfba-list-request@iww.org
Subject: subscribe
Message-ID: <Pine.BSI.3.90.951011200118.6144A-100000@fido.wps.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


can it do this without garbling?

From deke@fido.wps.com Wed Oct 11 20:04:27 1995
Status: O
X-Status: 
Date: Wed, 11 Oct 1995 20:04:26 -0700 (PDT)
From: Deke Motif Nihilson <deke@wps.com>
To: deke@iww.org
Subject: it worked from fido; Re: subscribe (fwd)
Message-ID: <Pine.BSI.3.90.951011200408.6144B-100000@fido.wps.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



---------- Forwarded message ----------
Date: Wed, 11 Oct 1995 19:43:16 -0700
From: sfba-list-request@iww.org
To: deke@wps.com
Subject: Re: subscribe

You have added to the subscriber list of:

	sfba-list@fletcher.iww.org

the following mail address:

	deke@wps.com

By default, copies of your own submissions will be returned.

This is an automated subscription mechanism.  For your verification, a
transcript of the original subscription request is included below.

If the wrong address has been subscribed and you seem to be unable to fix it
yourself, reply to this message now (quoting it entirely (for diagnostic
purposes), and of course adding any comments you see fit).
--
>From deke@wps.com  Wed Oct 11 19:43:09 1995
>Received: from fido.wps.com (root@wps.com [140.174.77.1]) by fletcher.iww.org (8.6.12/8.6.9) with ESMTP id TAA09459 for <sfba-list-request@iww.org>; Wed, 11 Oct 1995 19:43:07 -0700
>Received: (from deke@localhost) by fido.wps.com (8.6.12/8.6.9) id UAA06149; Wed, 11 Oct 1995 20:01:50 -0700
>Date: Wed, 11 Oct 1995 20:01:49 -0700 (PDT)
>From: Deke Motif Nihilson <deke@wps.com>
>To: sfba-list-request@iww.org
>Subject: subscribe
>Message-ID: <Pine.BSI.3.90.951011200118.6144A-100000@fido.wps.com>
>MIME-Version: 1.0
>Content-Type: TEXT/PLAIN; charset=US-ASCII
>
>
>can it do this without garbling?
>


