Learning the vi Editor

Learning the vi EditorSearch this book
Previous: 2.3 Simple Edits Chapter 2
Simple Editing
Next: 2.5 Joining Two Lines with J
 

2.4 More Ways to Insert Text

You have inserted text before the cursor with the sequence:

itext 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:
AAppend text to end of current line.
IInsert text at beginning of line.
oOpen blank line below cursor for text.
OOpen blank line above cursor for text.
sDelete character at cursor and substitute text.
SDelete line and substitute text.
ROverstrike existing characters with new characters.
All of these commands leave 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. vi has difficulty repeating the insertion of more than one line's worth of text.

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 enough, 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 EditorNext: 2.5 Joining Two Lines with J
2.3 Simple Edits Book Index2.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