如何在可视模式下使用HTML标记重复VIM环绕

pdu*_*ois 5 unix linux vim plugins

根据Tim Pope的说法,我们可以做到以下几点:

Finally, let's try out visual mode. 
Press a capital V (for linewise visual mode) followed by S<p class="important">.
Run Code Online (Sandbox Code Playgroud)

你得到了这个

<p class="important">
  <em>Hello</em> world!
</p>
Run Code Online (Sandbox Code Playgroud)

我试过,它的工作原理.但是,如何在许多其他视觉块上重复该命令?我尝试.但没有奏效.

更新:

有了这个文字:

foo
foo
foo
Run Code Online (Sandbox Code Playgroud)

我试过这个qqgvS<p class="important">q.它正确地给出了

<p class="important">
foo
</p>
foo
foo
Run Code Online (Sandbox Code Playgroud)

但是当我重复这个@q(用光标在第二行的f字母上)时,它给出了:

<p>
<p class="important">
foo
</p>
</p>
foo
foo
Run Code Online (Sandbox Code Playgroud)

代替

<p class="important">
foo
</p>
<p class="important">
foo
</p>
foo
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法呢?

Ing*_*kat 3

你不能;Repeat.vim插件仅处理正常模式下的重复。我已经编写了一个配套的Visualrepeat 插件,但around.vim不支持它。

对于内置命令,您可以通过 执行视觉选择gv:normal .<CR>,但这在这里不起作用。

我看到的唯一选项是录制宏,然后在之前的每个选择上执行该宏(通过使用gv)。

  • 基本上,`qqgvS&lt;p class="important"&gt;q`。然后,选择行,并通过“&lt;Esc&gt;@q”触发。 (2认同)
  • 重复仅在完成视觉选择后有效,在正常模式下无效。因此,首先选择行,然后选择“&lt;Esc&gt;@q”。 (2认同)