Normal mode , where the text keys issue editing commands. This is sometimes called command mode .
Insert mode , where text keys insert text into the document.
The lower-left corner of the display shows the current mode: if it says -- INSERT -- , then you're in insert mode; otherwise, you're in normal mode.
You can move the cursor around using the arrow keys. If your arrow keys don't work (which may be the case if you're using a remote connection from a bad terminal program), you can use the h, j, k, and l keys, as shown in Table 4-7 .
Table 4-7. Basic vi movement commands
Command |
Description |
Left, h, or Backspace |
Move left one character. |
Down or j |
Move down one line. |
Up or k |
Move up one line. |
Right, l, or Space |
Move right one character. |
Enter |
Move to the start of the next line. |
Home, ^, |, or 0 (Zero) |
Move to the start of the line. |
End, $ |
Move to the end of the line. |
: number Enter |
Move to line number . |
:0 Enter |
Move to the start of the file. |
:$ |
Move to the end of the file. |
w |
Move forward one word. |
You can put a number in front of any command to repeat the command. For example, typing 10j will move down 10 lines.
There are several commands for inserting text, as shown in Table 4-8 .
Table 4-8. Commands to enter insert mode
Command |
Description |
i |
Insert before the cursor. |
I |
Insert at the start of the line. |
a |
Append after the cursor. |
A |
Append at the end of the line. |
o |
Open a line after the current line and insert text. |
O |
Open a line before the current line and insert text. |
All of these commands place the editor into insert mode; the only difference is where the cursor is positioned for the inserted text. The word -- INSERT -- will appear in the lower-left corner of the display.
To exit from insert mode and return to normal mode, press Esc. The -- INSERT -- indicator in the lower-left corner of the display will disappear.
4.4.1.4. Deleting, yanking, and putting: vi's version of cutting, copying, and pasting
vi offers three basic commands for deleting or yanking, as shown in Figure 4-9 . Deleting is roughly equivalent to cutting in a GUI-based editor, and yanking is similar to copying.
Table 4-9. Basic delete and yank commands
Command |
Description |
Examples |
x |
Delete one character to the right of the cursor. |
x deletes one character to the right of the cursor; 25x deletes the character at the cursor position and 24 characters to the right. |
X |
Delete one character to the left of the cursor. |
X deletes one character to the left of the cursor; 19X deletes 19 characters to the left. |
d, followed by a cursor movement |
Delete from the cursor position to the indicated position. |
dj deletes the current line and the line below; dw deletes one word. |
dd |
Deletes a line. |
dd deletes the current line; 15dd deletes 15 lines. |
y, followed by a cursor movement |
Yank from the cursor position to the indicated position. |
yj yanks the current line and the line below; yw yanks one word. |
yy |
Yanks a line. |
yy yanks the current line; 15yy yanks 15 lines. |
p |
Puts yanked or deleted text after the cursor. If the text contains any partial lines, it is inserted directly after the cursor; otherwise, it is inserted starting on the next line. |
p puts one copy of the yanked text into the document after the cursor; 20p puts 20 copies of the yanked text after the cursor. |
P |
Puts yanked or deleted text before the cursor. If the text contains any partial lines, it is inserted directly before the cursor; otherwise, it is inserted on the previous line. |
P puts one copy of the yanked text into the document before the cursor; 20P puts 20 copies of the yanked text before the cursor. |
Typing / followed by some text (actually, a regular expression) and pressing Enter will search forward in the document. Typing n will repeat the previous search in the forward direction. Typing ? instead of / will search backward instead of forward; N will repeat a search backward.
Searching can be combined with deleting and yanking; for example, d/hello will delete from the cursor position up to the start of the word hello .
4.4.1.6. Undoing, redoing, and repeating
Pressing u will undo the last operation performed; pressing Ctrl-R will redo it. Typing a dot ( . ) will repeat the last operation.
4.4.1.7. Saving and exiting
There are a number of commands available for saving the document and exiting vi , as shown in Table 4-10 ; you must press Enter after these commands.
Table 4-10. Saving text and exiting vi
Command |
Description |
:w |
Write (save) using the current filename. |
:w newfilename |
Write to the file newfilename (subsequent :w commands will still write to the original filename). |
:w! |
Force-write (write even if in read-only mode). |
:q |
Quit (succeeds only if the document is saved). |
:q! |
Force quit even if the document isn't saved (abort!). |
:wq or :x or ZZ |
Write and quit (exit with save). |
vi is one of a group of programs that uses a terminal-control system called curses . curses enables an application to manage a character-mode display by positioning the cursor and interpreting keystrokes using a database of information about each terminali.e., which codes to send to produce different effects and which codes can be received from the terminal. Fedora's terminfo database has entries for about 2,500 different hardware terminals and terminal programs that have been produced through the years.
curses keeps two buffers areas of memory arranged in the same size and layout as the screento store the current terminal screen contents and the desired display. When vi needs to update the screen, it updates the display buffer; curses compares the two buffers to determine the minimum number of commands it can send to the terminal to produce the desired display. It then sends the appropriate codes from the terminal database ( terminfo / termcap ) to update the terminal, copies the display buffer to the terminal buffer, and repeats the process.
The version of vi used by Fedora Core is Vim (Vi iMproved), which adds many, many features to the traditional vi capabilities; the commands covered in this chapter outline only the basics. Vim offers syntax highlighting, macro recording, support for multiple character sets, accents, right-to-left text, and many other features, making it a useful text editor for programming, scripting, and editing system files.
Читать дальше