Vim - 在<p>标记中包围多行

jed*_*edi 0 vim

我如何从中得到:

hello world
hello world
hello world
hello world
Run Code Online (Sandbox Code Playgroud)

对此:

<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
Run Code Online (Sandbox Code Playgroud)

使用vim-surround或vim-emmet.

当我突出显示文本时,按ctrl + y然后按','我可以键入p标签,但它包围一个p标签中的所有4个段落.

rom*_*inl 6

环绕声:

vjjj                " select the block (or whatever works for your actual use case)
:norm yss<p><CR>    " execute the normal mode yss command provided by Surround
                    " on each line of the selection
                    " note that Vim automatically inserts the range corresponding
                    " to your visual selection: :'<,'>norm ...
Run Code Online (Sandbox Code Playgroud)

或者如果您对范围有信心:

:,+3norm yss<p><CR>
Run Code Online (Sandbox Code Playgroud)

没有任何插件:

C<p><C-r><C-o>"</p><Esc>
j0.
j0.
j0.
Run Code Online (Sandbox Code Playgroud)

或变种:

C<p><C-r><C-o>"</p><Esc>
jvjj
:'<,'>norm .
Run Code Online (Sandbox Code Playgroud)

或者如果您对范围有信心,可以使用上述变体的变体:

C<p><C-r><C-o>"</p><Esc>
:+,+2norm .
Run Code Online (Sandbox Code Playgroud)

或上述三种变体的单步变体:

:,+3norm C<p><C-v><C-r><C-v><C-o>"</p><CR>
Run Code Online (Sandbox Code Playgroud)

或者使用超级简单替换的完全不同的方法:

:,+3s@.*@<p>&</p><CR>
Run Code Online (Sandbox Code Playgroud)

参考:

:help C
:help ctrl-r_ctrl-o
:help registers
:help .
:help :normal
:help :range
:help :s
Run Code Online (Sandbox Code Playgroud)