Vim语法匹配有误([A-Z]匹配所有字母字符)。

3

我有一个包含以下代码的 .vimrc 文件:

syntax match proper /\s[A-Z][a-zA-Z]*/

理论上,它应该匹配任何以空格为前缀并以大写字母开头的字母字符集。当我在Ubuntu 11.11上运行vim 7.3时,它按预期工作。但是,当我将.vimrc发送到在CentOS 5.6上运行vim 7.0的服务器时,它会匹配所有以空格为前缀的单词,而不仅仅是以大写字母开头的单词。
我已经搜索了几个小时,但是我感到困惑。我尝试使用[[:upper:]]代替[A-Z],但结果相同。使用/[A-Z]/[[:upper:]]进行搜索只选择大写字符。在bash中运行ls | grep "[A-Z]"只会突出显示带有大写字符的文件。
2个回答

4

在忽略大小写之后,我猜测可能是语法高亮脚本配置出错了:

有些语言不区分大小写,比如Pascal。而其他一些语言,比如C语言,则区分大小写。你需要使用以下命令来确定你的语言类型:

:syntax case match
:syntax case ignore

您可以尝试在特定位置添加 :syntax case match(或从哪里发出虚假的 ignore)并查看会发生什么。


1

你是否意外开启了ignorecase?使用/\s\C[A-Z]\c[A-Z]*/会得到什么结果?


3
你应该把它表述为一个答案,而不是一个评论。我怀疑这真的应该是答案,所以我建议重新措辞一下。 - sehe
ignorecasesmartcase都关闭了。不幸的是,/\s\C[A-Z]\c[A-Z]*/选择了与/\s[A-Z][a-zA-Z]*/完全相同的文本。 - nullflux
@sehe 有时候我在撰写答案的时候,它会变成评论或者反过来。对此我感到抱歉。 - Neil

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