在Vim中,如何搜索单词边界字符,例如正则表达式中的\b?

182

我希望能够进行搜索。

/the\b

查找 "the" 但不包含 "then"

我还尝试打开超级魔法模式进行搜索:

/\vthe\b
4个回答

202

4
为什么 \b 不起作用?Vim 不符合正则表达式吗? - Kwolf
9
我理解您的意思是“Perl Compatible Regular Expressions”(兼容Perl正则表达式)。Vim的正则表达式语法早于PCRE。我已经为相关问题添加了链接。 - Adam Monsen
"regexp"并不意味着PCRE。它只是“regex”的同义词。 - henrebotha

103
使用\<\> 分别表示单词的开头和结尾。
例如,在您的具体情况下,您将使用:
/the\>/

我总是忘记这个并且不得不回到这个页面的原因是因为我忘记了它是一个反斜杠,因为你正在插入一个特殊字符:一个单词边界。我倾向于输入正斜杠,因为我习惯了它作为转义序列,然后我就无法弄清楚为什么它不起作用。希望这能帮助有同样问题的人。 - felwithe

46

如果打开了非常魔法,则不应该转义>字符。参见魔法搜索

/\v<the>

它将仅搜索单词“the”。


18
如果您想在光标位置搜索一个单词,您可以按下*,或者按下#进行向后搜索。

很不幸,这忽略了符号(如果您在$var上使用它,它将匹配“var”,而不是“$var”)。我理解为什么- $不是单词字符。但查找精确的变量名称是我搜索的最常见原因之一。 - felwithe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接