我知道要搜索整个单词,我应该使用/\<mypattern\>
。但是对于破折号(+ U002d)字符不是这样,/\<-\>
总是失败。我也尝试/\<\%d45\>
,它也失败了。有谁知道原因?
Edit2:由于@bobbogo提到短划线不在'iskeyword'中,所以我添加:set isk+=-
和/\<-\>
有效!
编辑1:我认为在Vim中/\<word\>
仅对字母数字字符有效,我们不应将其用于标点字符(请参阅Edit2)。我应该改变我的问题并询问我们如何搜索标点符号作为一个整体世界,例如我希望我的搜索在“a?b”中找到问号,并且模式如“??”和“abc?”不应该有效。
答案 0 :(得分:4)
\<
匹配非单词字符和单词字符之间的零宽度边界。什么是单词字符?它由 isk 选项(:help isk
)指定。
由于-
不在您的 isk 选项中,因此-
永远不能启动一个字,因此\<-
会< em>永远匹配。
我不知道你想要什么,但/\>-\<
会匹配hello-word
中的短划线。
答案 1 :(得分:0)
始终可以搜索正则表达式\byourwordhere\b
答案 2 :(得分:0)
正如OP所说。要将短划线-
包含在搜索中,请执行:
:set isk+=-
多数人。
示例:当您在*
的{{1}}字母上按c
时,它将搜索整个变量名称,而不仅仅是color-primary
。< / p>