home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


2.4 More Ways to Insert Text

You have inserted text before the cursor with the sequence:

i
text to be inserted

[ESC]

You've also inserted text after the cursor with the a command. There are other insert commands for inserting text at different positions relative to the cursor:

A

Append text to end of current line.

I

Insert text at beginning of line.

o

Open blank line below cursor for text.

O

Open blank line above cursor for text.

s

Delete character at cursor and substitute text.

S

Delete line and substitute text.

R

Overstrike existing characters with new characters.

All of these commands place you in insert mode. After inserting text, remember to press [ESC] to escape back to command mode.

A (append) and I (insert) save you from having to move your cursor to the end or beginning of the line before invoking insert mode. (The A command saves one keystroke over $a . Although one keystroke might not seem like much of a saving, the more adept -- and impatient -- an editor you become, the more keystrokes you will want to omit.)

o and O (open) save you from having to insert a carriage return. You can type these commands from anywhere within the line.

s and S (substitute) allow you to delete a character or a whole line and replace the deletion with any amount of new text. s is the equivalent of the two-stroke command c [SPACE] and S is the same as cc . One of the best uses for s is to change one character to several characters.

R ("large" replace) is useful when you want to start changing text, but you don't know exactly how much. For example, instead of guessing whether to say 3cw or 4cw , just type R and then enter your replacement text.

2.4.1 Numeric Arguments for Insert Commands

Except for o and O , the above insert commands (plus i and a ) take numeric prefixes. With numeric prefixes, you might use the commands i , I , a , and A to insert a row of underlines or alternating characters. For example, typing 50i* [ESC] inserts 50 asterisks, and typing 25a*- [ESC] appends 50 characters (25 pairs of asterisk and hyphen). It's better to repeat only a small string of characters.[4 ]

[4] Very old versions of vi have difficulty repeating the insertion of more than one line's worth of text.

With a numeric prefix, r replaces that many characters with a repeated instance of a single character. For example, in C or C++ code, to change || to && , you would place the cursor on the first pipe character, and type 2r& .

You can use a numeric prefix with S to substitute several lines. It's quicker and more flexible, though, to use c with a movement command.

A good case for using the s command with a numeric prefix is when you want to change a few characters in the middle of a word. Typing r wouldn't be correct, but typing cw would change too much text. Using s with a numeric prefix is usually the same as typing R .

There are other combinations of commands that work naturally together. For example, ea is useful for appending new text to the end of a word. It helps to train yourself to recognize such frequent combinations so that they become automatic.


Previous: 2.3 Simple Edits Learning the vi Editor Next: 2.5 Joining Two Lines with J
2.3 Simple Edits Book Index 2.5 Joining Two Lines with J

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System