在以下代码中:
a = b = c == 1
我只想匹配前两个 =,而不是最后的 ==。
我认为该模式\<=\>
会起作用,因为\<
匹配单词的开头并\>
匹配结尾。但事实并非如此。这种模式有什么问题,正确的模式是什么?
vim 支持lookarounds,所以你可以在= 周围使用负向lookbehind 和负向lookahead。这将仅匹配所需的 =,甚至在行的开头或结尾处匹配 =。
\(=\)\@<!=\(=\)\@!
您不能使用,\<=\>
因为通常等号字符不是关键字字符。您可以使用 来解决此问题:set iskeyword+==
,但这可能会对导航和语法突出显示产生副作用。
这个正则表达式应该工作:
[^=]=[^=]
=
如果您想在行首或行尾匹配单个,它将中断- 但我认为这对您的模式来说不是问题。