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.
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.[
]
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.