2

在以下代码中:

a = b = c == 1

我只想匹配前两个 =,而不是最后的 ==。

我认为该模式\<=\>会起作用,因为\<匹配单词的开头并\>匹配结尾。但事实并非如此。这种模式有什么问题,正确的模式是什么?

4

3 回答 3

5

vim 支持lookarounds,所以你可以在= 周围使用负向lookbehind 和负向lookahead。这将仅匹配所需的 =,甚至在行的开头或结尾处匹配 =。

\(=\)\@<!=\(=\)\@!
于 2013-03-29T06:01:54.533 回答
4

您不能使用,\<=\>因为通常等号字符不是关键字字符。您可以使用 来解决此问题:set iskeyword+==,但这可能会对导航和语法突出显示产生副作用。

于 2013-03-29T06:45:24.487 回答
0

这个正则表达式应该工作:

[^=]=[^=]

=如果您想在行首或行尾匹配单个,它将中断- 但我认为这对您的模式来说不是问题。

于 2013-03-29T05:54:29.963 回答