How do I use the popular editor 'vi' to view, change or create files on my linux / BSD / unix server?

Vi is a very popular editor that is installed on pratically every current linux/unix/BSD OS.  Vi is short for ‘Vi’sual Editor.  Vi can be a complicated editor to use if you are not familar with commands, however once you overcome the learning curve you will realize how powerful of an editor vi can be.


 


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 <newfilename>


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



vi Modes


vi has two modes:



   command mode
   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 Enter key to be pressed.



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.


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. 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:



Move the cursor to the character to be replaced.
Type r
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:



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


Inserting Text


To insert text in a line:



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


The text is inserted BEFORE the cursor.  Press <Esc> to get back to command mode.



Appending Text


To add text to the end of a line:



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


This adds text AFTER the cursor.  Press <Esc> to get back to command mode.



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
     CTRL+f   scroll forward one screen
     CTRL+b   scroll backward one screen
     CTRL+d   scroll down one-half screen
     CTRL+u   scroll up one-half screen



Moving by Searching


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



Type / (slash).
Enter the text to search for.
Press <Enter>.


The cursor moves to the first occurrence of that text.  Remember, your searches are CASE-SENSITIVE.


To repeat the search in a forward direction, type


     n


To repeat the search in a backward direction, type


     N(Upper case)



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(Both Upper case)


Some vi command begin with a : (colon) and end with a <Enter>. The command is displayed on the status line as you type. Some of these commands are useful when saving and closing files.


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



Press <Esc>.
Type :w
Press <Enter>.


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



Press <Esc>.
Type :q!
Press <Enter>.

Your rating: None