如何删除除行的第一个实例以外的所有实例?
例如,我有
LOADING CONDITION : LIGHTSHIP CONDITION
其中一些通过文件的内容传播开来。我想只保留第一个靠近顶部的实例。
想点什么?
答案 0 :(得分:7)
您可以将:global
命令与范围结合使用。
:0/LOADING CONDITION/+,$g//d
说明:
[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
答案 1 :(得分:2)
gg (make cursor back to top)
/LOADING CONDITION : LIGHTSHIP CONDITION (enter)
n
:.,$g//d
答案 2 :(得分:1)
我的PatternsOnText plugin提供了一个命令(和其他相关命令),这使得这很简单:
:DeleteDuplicateLinesOf /^LOADING CONDITION : LIGHTSHIP CONDITION$/