替换命令中的gvim not operator

时间:2010-12-28 15:21:35

标签: regex vim

我有很多类似下面的文件:

HR0100001012010093001
EF0000120100930000000
HR0200001012010093001
EF0000120100930000000
HR0900001012010093001
EF000012010093000000
HR1000001012010093001
EF000012010093000000
HR1100001012010093001
text
EF000012010093000000
HR1200001012010093001
EF000012010093000000
HR1300001012010093001
EF000012010093000000
HR0100001012010093001
text
EF0000120100930000000
HR2000001012010093001
EF000012010093000000
HR2200001012010093001
EF000012010093000000

我想剥离所有以HRxx开头并以EF *结尾的块,除了那些以HR01开头的块,即我想得到以下结果:

HR0100001012010093001
EF0000120100930000000
HR0100001012010093001
text
EF0000120100930000000

使用以下命令:

:%s/HR01\_.\{-}EF.*$//g

我可以删除我正在搜索的行;作为最后一步,我想使用“非运算符”来反转结果,从而得到我实际需要的行。不幸的是我不明白该怎么做。

非常感谢任何帮助。

谢谢, 弗朗西斯

1 个答案:

答案 0 :(得分:2)

找到解决方案:

%s/HR\(01\)\@!\_.\{-}EF.*$//g