how to add an extra character after exactly two character on each line in vim
I have the text in the file like this:
in IDMAN
ip f开发者_如何转开发rghj
I want the text to be like this:
in *IDMAN
ip *frghj
You can do:
:%s/\%3c/*
Explanation:
:s
is the substitute command,%
is the range for all lines in the file/
is the pattern delimiter\%3c
is a pattern that matches nothing at third character in the line*
is the substitution expression
Hover your cursor over the capital I
in IDMAN
in normal mode.
Enter visual block selection with CTRL-V and go down a line with j
.
Enter insert mode with SHIFT-I and then enter your desired character.
Go back to normal mode with ESC and the character will appear in the same column for the rest of the lines.
For the example file:
in IDMAN
ip frghj
and the following output (a star on each line):
in *IDMAN
ip *frghj
The sequence of commands is the following (cursor has to be on the character where the addition should happen):
CTRL-vjI*ESC
That means:
- CTRL-v: Start visual block mode
- j: Mark the second line too
- I: Go into input mode for the block
- *: Insert the character(s)
- ESC: Close the visual input mode, so to all marked lines, the characters will be added.
How to add an *
character after exactly three character on each line in vim:
:%s/\(...\)/\1*/
see :help :s
, :help range
, :help s/\\1
or, more shortly (great thanks to @Benoit for :-) )
:%s/.../&*/
see help s/\&
(thank @Benoit for being pointed to this)
精彩评论