如何使用 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
。
使用 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
。