Linux Bible. Christopher Negus
not on your system, try installing the vim-enhanced package.
Adding text
To get into input mode, type an input command letter. To begin, type any of the following letters. When you are finished inputting text, press the Esc key (sometimes twice) to return to command mode. Remember the Esc key!
a: The add command. With this command, you can input text that starts to the right of the cursor.
A: The add at end command. With this command, you can input text starting at the end of the current line.
i: The insert command. With this command, you can input text that starts to the left of the cursor.
I: The insert at beginning command. With this command, you can input text that starts at the beginning of the current line.
o: The open below command. This command opens a line below the current line and puts you in insert mode.
O: The open above command. This command opens a line above the current line and puts you in insert mode.
TIP
When you are in insert mode, -- INSERT --
appears at the bottom of the screen.
Type a few words, and press Enter. Repeat that a few times until you have a few lines of text. When you're finished typing, press Esc to return to command mode. Now that you have a file with some text in it, try moving around in your text with the keys or letters described in the next section.
TIP
Remember the Esc key! It always places you back into command mode. Remember that sometimes you must press Esc twice. For example, if you type a colon (:
) to go into ex
mode, you must press Esc twice to return to command mode.
Moving around in the text
To move around in the text, you can use the up, down, right, and left arrows. However, many of the keys for moving around are right under your fingertips when they are in typing position:
Arrow keys: Move the cursor up, down, left, or right in the file one character at a time. To move left and right, you can also use Backspace and the spacebar, respectively. If you prefer to keep your fingers on the keyboard, move the cursor with h (left), l (right), j (down), or k (up).
w: Moves the cursor to the beginning of the next word (delimited by spaces, tabs, or punctuation).
W: Moves the cursor to the beginning of the next word (delimited by spaces or tabs).
b: Moves the cursor to the beginning of the previous word (delimited by spaces, tabs, or punctuation).
B: Moves the cursor to the beginning of the previous word (delimited by spaces or tabs).
0 (zero): Moves the cursor to the beginning of the current line.
$: Moves the cursor to the end of the current line.
H: Moves the cursor to the upper-left corner of the screen (first line on the screen).
M: Moves the cursor to the first character of the middle line on the screen.
L: Moves the cursor to the lower-left corner of the screen (last line on the screen).
Deleting, copying, and changing text
The only other editing that you need to know is how to delete, copy, or change text. The x
, d
, y
, and c
commands can be used to delete and change text. These can be used along with movement keys (arrows, PgUp, PgDn, letters, and special keys) and numbers to indicate exactly what you are deleting, copying, or changing. Consider the following examples:
x: Deletes the character under the cursor.
X: Deletes the character directly before the cursor.
d<?>: Deletes some text.
c<?>: Changes some text.
y<?>: Yanks (copies) some text.
The <?> after each letter in the preceding list identifies the place where you can use a movement command to choose what you are deleting, changing, or yanking. For example:
dw: Deletes (d) a word (w) after the current cursor position.
db: Deletes (d) a word (b) before the current cursor position.
dd: Deletes (d) the entire current line (d).
c$: Changes (c) the characters (actually erases them) from the current character to the end of the current line ($) and goes into input mode.
c0: Changes (c) (again, erases) characters from the previous character to the beginning of the current line (0) and goes into input mode.
cl: Erases (c) the current letter (l) and goes into input mode.
cc: Erases (c) the line (c) and goes into input mode.
yy: Copies (y) the current line (y) into the buffer.
y): Copies (y) the current sentence ( ) ), to the right of the cursor, into the buffer.
y}: Copies (y) the current paragraph ( } ), to the right of the cursor, into the buffer.
Any of the commands just shown can be further modified using numbers, as you can see in the following examples:
3dd: Deletes (d) three (3) lines (d), beginning at the current line.
3dw: Deletes (d) the next three (3) words (w).
5cl: Changes (c) the next five (5) letters (l) (that is, removes the letters and enters input mode).
12j: Moves down (j) 12 lines (12).
5cw: Erases (c) the next five (5) words (w) and goes into input mode.
4y): Copies (y) the next four (4) sentences ( ) ).
Pasting (putting) text
After text has been copied to the buffer (by deleting, changing, or yanking it), you can place that text back in your file using the letter p
or P
. With both commands, the text most recently stored in the buffer is put into the file in different ways.
P: Puts the copied text to the left of the cursor if the text consists of letters or words; puts the copied text above the current line if the copied text contains lines of text.
p: Puts the buffered text to the right of the cursor if the text consists of letters or words; puts the buffered text below the current line if the buffered text contains lines of text.
Repeating commands
After you delete, change, or paste text, you can repeat that action by typing a period (.
). For example, with the cursor on the beginning of the name Joe, you type cw and then type Jim to change Joe
to Jim
. You search for the next occurrence of Joe
in the file, position the cursor at the beginning of that name, and press a period. The word changes to Jim
, and you can search for the next occurrence. You can go through a file this way, pressing n
to go to the next occurrence and period (.
) to change the word.
Exiting vi
To wrap things up, use the