如何使用 vim 普通模式复制所有行

how to duplicate all lines with vim nomal mode

使用 3 个字母选择:vip 本段:

Hello
all
how are you

我想复制每一行来得到这个:

Hello
Hello
all
all
how are you
how are you

我希望这项工作:

:'<,'>normal yyPjj

但我明白了

Hello
Hello
Hello
all
how are you

您还可以将宏录制到例如 a 寄存器中 qayypjq。 然后你可以用 @a 运行 并用 N@a 重复 N 次(其中 N 是一些 数)

这可能是最惯用的方法:

:'<,'>g/^/t.

细分:

  • :[range]g/<pattern>/<command>[range] 中匹配 <pattern> 的每一行上执行 <command>。参见 :help :global
  • '<,'> 是我们的 [range],它覆盖了视觉选择的行。参见 :help :range
  • ^ 是我们的 <pattern>,它匹配 BOL。为此,我喜欢 ^,但可以使用 .$ 或任何适用于它们的方法,只要它与 [range].
  • 中的所有行匹配
  • t. 是我们的 <command>,它将当前行复制到自身下方,本质上是复制它。参见 :help :t