删除除行的第一个实例之外的所有实例

Roo*_*ook 3 vim windows-7

除了行的第一个实例之外,如何删除所有已知的?

例如,我有

LOADING CONDITION :   LIGHTSHIP CONDITION
Run Code Online (Sandbox Code Playgroud)

其中一些通过文件的内容传播开来.我想只保留第一个靠近顶部的实例.

想法有人吗?

Pet*_*ker 7

您可以使用:global与范围组合的命令.

:0/LOADING CONDITION/+,$g//d
Run Code Online (Sandbox Code Playgroud)

说明:

  • [range]g/{pat}/{cmd}在给定行范围内{cmd}匹配的每一行上运行命令.{pat}[range]
  • 0/LOADING CONDITION/ 从第一行开始找到模式 LOADING CONDITION
  • 0/LOADING CONDITION/+1 在第一个实例下面开始范围1行
  • +1+因为可以假设1,所以可以缩短.
  • ,$ 范围的结尾将是文件中被称为的最后一行 $
  • g//使用最后一个搜索模式.在这种情况下,范围的模式
  • :delete:d简称是用于删除行的ex命令

有关更多信息,请参阅

:h :g
:h :d
:h range
Run Code Online (Sandbox Code Playgroud)