How to surround multiple lines individually with surround.vim
문제
I have these three (or more) lines that I want to surround with li (or any other) tag :
Bananas
Citrus
Orange
I can do it this way: qaysstli>jq
then 2@a
.
Is there a way to do this faster and without a macro ?
해결책
- Select visually all the lines with
<S-v>
- Type
:norm yss<li>
then<CR>
Result:
<li>Bananas</li>
<li>Citrus</li>
<li>Orange</li>
Ranges are good too: :.,+2norm yss<li><CR>
does the same, as well as :1,3norm yss<li><CR>
.
다른 팁
Use Visual Block and then surround.
<c-v>
to start visual block mode and then move to the last line of the text. Use $
to select to the end of each line then S<li>
All together:
<c-v>2j$S<li>
The faster way I can think about it using zencoding-vim. With that plugin you can select visually the text, then you can type ctr+y , and then type:
ul > li*
Adn you'll get the list. It looks like magic and it's very fast too.
Not the most efficient way but found it helpful as a newbie, you can use Visual Block twice to add the tag at the beginning and at the end of the word.
<c-v>
to start the visual block and then useI
to insert the first<li>
, end with[esc]
.<c-v>
to start the visual block and then use$
to select to the end of the block. UseA
and then append<li>
, end with[esc]
.
All together: <c-v>2jI<li>[esc]
and <c-v>2j$A<li>[esc]