by Wei-Meng Lee
02/21/2003Jaguar includes a few text editors for your editing work. Of these applications, many experienced Unix users will prefer
vi (Visual Editor). While users of GUI systems are more familiar with «user friendly» word processors and text editors,
vi is a powerful and feature-rich text editor that is lean and efficient.
vi requires patience and a little practice; hence, the learning curve is steeper than that of a text editor such as BBEdit. But programmers who regularly use
vi swear by it. For some, using
vi is a symbol of strength, differentiating the men from the boys.
But what if you need to edit a file quickly in Terminal and don’t have the time to learn and practice
vi? In this article, I will present a quick guide to getting you started using
vi. Do remember though, topics on
vi are enough to fill an entire book, and hence this article is just a tip of the iceberg. Hopefully, it will shed some light on this powerful editor and tempt you to learn more.
vi, you need to launch Terminal and at the prompt. Type:
vi is launched, you should see a window such as the following:
Figure 1. Starting
The first important thing you should know is that
vi operates in two modes–Command mode and Insert mode. Use Command mode to issue commands, such as to delete a line or character. To start typing, you need to use Insert mode. When you first run
vi, you will be in Command mode.
Navigating the Cursor
While most terminals support the use of the cursor arrow keys to move the on-screen cursor around, you might want to know that you can also use the normal keys to move the cursor. As shown in Figure 2, you can use the h, j, k and l keys to navigate the cursor:
Figure 2. Navigating the cursor using the h, j, k and l keys.
At first, this key assignment might feel odd. But with some practice, you’ll get more comfortable. And best of all, you can navigate the cursor without lifting your hand!
Interestingly, to move the cursor five spaces to the right, you can type
5l. To move down three lines, you type
3j, and so on.
To jump to the beginning of a line, press
0 (numeric zero). To jump to the end of a line, press
Let’s try to type some text into our file.
To start typing, we need to go into Insert mode. Press
i (to insert a character) and type in the following:
vi is an editor in Unix
hat happens if you make a mistake and want to change it? Chances are, you’ll want to position your cursor at the character to be edited, and by doing so, you use your cursor keys and some strange characters appear. If so, do not panic. Simply press the Esc key to return to Command mode. Pressing the Esc key will switch from Insert mode to Command mode.
Now that you have typed in your first sentence, let’s edit this sentence. I want to sentence to read: «vi is a powerful editor in Unix». So, position your cursor at «a» (the underline indicates the position of your cursor):
vi is an editor in Unix
a (for append) and type » powerful». You should now have:
vi is a powerfuln editor in Unix
So what is the difference between
i? If you pressed
i at «a» and type » powerful» you will get:
vi is powerfulan editor in Unix
See the difference?
To insert a new line, simple press the enter key or use
o to insert a new line between two lines.
To delete a character, position the cursor over the character and press
To delete an entire word, say, «powerful», position the cursor over the start of the word and press
dw, such as:
vi is a powerful editor in Unix
To delete an entire line, position the cursor on the line that you want to delete and press
dd. To delete multiple lines, press
n is the number of lines to delete. For example,
d2d will delete two lines.
Saving a File
If you start
vi by specifying a filename, you can simply save the file by pressing
:w and return. Note that pressing «
:» when in Command mode will bring you to the bottom of the screen. This is where you can issue further commands.
If you start
vi without any parameters, you need to provide a filename:
~ ~ :w newfile.txt
You can also use this method to save the file into another file. Note that if the filename you specify already exists,
vi will not overwrite the existing file. Instead, use
:w! to overwrite the existing file.
Inserting a File
There may be times where you need to add the content of another file into your current file. In this case, you can use
:r, like this:
~ ~ :r anotherfile.txt
Simply first position the cursor at the line where you want to insert the file and then press
To exit from
vi, use the
:q command. If the file has been modified and you have not saved the changes,
vi will not allow you to quit. To quit without saving, use
Opening a File
If you want to edit another file while you are still in
vi, you can use
:e to open another file for editing:
~ ~ :e textfile.txt
Copying, Cutting, and Pasting Text
To copy a block of text, you can use the
y (for yank) command. To yank the whole line, press
To copy a word, use
To copy from the cursor to the end of the line, use
To paste yanked text, use the
p (for put) command.
|Continuing from the previous
Note that for cut operations, you can use the
d command (see «Deleting Text») to cut a block of text and
p to paste the block of text.
Undoing and Redoing
You can undo your action by pressing
u. Note that you can only undo the last action. To redo the same action, use the period (
Changing and Replacing Text
You can change the text in your file by using the
c command. For example,
cw allows you to change the entire word:
To change the last three words, use
To change the words starting from the current cursor position to the end of the line, use
To change the words starting from the beginning of the line to the current cursor position, use
c0 (numeric zero).
To replace a single character, position the cursor at the character you want to replace and type
r, followed by a character.
Searching for Text
To search for a particular piece of text in
vi, use the
/ command followed by the text for which to search. For example,
/in will look for the first occurrence of the word «in». To repeat the search, press
/ and then Enter.
To replace all occurrence of a word in a document, you can use the
s command. For example,
:s/in/on will replace the first occurrence of the word «in» with the word «on».
:s/in/on/g will replace all occurrences of the word «in» with the word «on» on the current line.
:1,45s/in/on/g will replace all occurrences of the word «in» with the word «on» from line 1 to line 45.
:%s/in/on/g will replace all occurrences of the word «in» with the word «on» in the entire file.
Jumping to a Line
If you are editing a large file, you can jump directly to a line by typing the line number. For example,
:4 will position the cursor directly on line four. This is useful when you are debugging a program and the compiler has indicated an error on a particular line.
I hope you find this quick tutorial to
vi a useful one. Remember, the more you use
vi the more you will enjoy it. Have fun!
Return to the Mac DevCenter.
You must be logged in to the O’Reilly Network to post a talkback.
Showing messages 1 through 12 of 12.