我想使用搜索并使用模式匹配在vim中突出显示。我的第一个搜索条件是在一行中查找字符串foo
。我的第二个搜索条件是,如果同一行中包含foo
,则跳过所有bar
。我不想删除所有包含bar
的行。我的第一个搜索条件满足以下条件:
/foo
我的第二个条件不符合:
/foo.*\(bar\)\@<!
示例文本:
1 foo
2 foo bar xx
3 fooobar
4 bar
5 xxx
((在此我仅要突出显示行号1和3)
我在这里想念的是什么?
您可以使用
/\(\<bar\>.*\)\@<!foo\(.*\<bar\>\)\@!
非常魔术模式:
/\v(<bar>.*)@<!foo(.*<bar>)@!
详细信息
(<bar>.*)@<!
-后面是否定词:没有完整的单词bar
,后跟当前位置右侧的0个或多个字符foo
-单词foo
] >>(.*<bar>)@!
-否定前瞻:在当前位置右侧的0个或多个字符之后,不允许整个单词bar
。