gvim - yank /删除特定行

ygo*_*cho 1 vim

使用vim.我的原始文件如下所示:

Wire 1_blah
Wire 2_blah
Wire 3_blah
reg blah_blah_1
reg blah_blah_2
reg blah_blah_3
Run Code Online (Sandbox Code Playgroud)

(除了,想象一下大约4000行)

我想要的结果如下:

Wire 1_blah
Wire 2_blah

reg blah_blah_1
reg blah_blah_2

Wire 3_blah
reg blah_blah_3
Run Code Online (Sandbox Code Playgroud)

意思是,我想删除所有数字为3的行并将其粘贴到最后.我尝试了以下方法:

:'<,'>g/3/d
Run Code Online (Sandbox Code Playgroud)

然后

p
Run Code Online (Sandbox Code Playgroud)

但这只记得删除的最后一行.

有关如何快速有效地完成此任务的任何建议?我不想浪费时间手动做.

谢谢!

rom*_*inl 8

:g/3/m$
Run Code Online (Sandbox Code Playgroud)

做你想要的:

  • :g[lobal]/foo/commandcommand在每一行匹配时执行foo,
  • :m$ 将当前行移动到缓冲区的末尾,
  • :g/3/m$将包含a的所有行移动3到缓冲区的末尾.

:help :global:help :move.

胜利的前命令!

编辑

要在同一个寄存器中删除所有这些行,比如注册a,请使用:

:g/3/d A
Run Code Online (Sandbox Code Playgroud)

意思是"剪切并附加这些行以注册a".

:help registers.