2011-12-17 33 views
3

我有一个包含以下行.vimrc文件:VIM语法匹配是错误的([az]可以匹配所有字母)

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]"只会突出显示带有大写字母的文件。

回答

4

我的下一个最好的猜测(忽略大小写后)将在语法高亮显示脚本本身的配置错误:

一些语言不区分大小写,如帕斯卡。其他人,如C, 区分大小写。你需要告诉哪种类型有以下 命令:

:syntax case match 
:syntax case ignore 

你能尝试,当你特别添加:syntax case match进来(或那个地方的伪ignore是从哪里来的)会发生什么?

+0

'syntax case match'解决了它!谢谢一堆! – nullflux 2011-12-18 01:13:06

1

你不小心把ignorecase打开了吗?你用/\s\C[A-Z]\c[A-Z]*/得到什么?

+3

你实际上应该把它作为答案。现在应该发表评论。我怀疑这真的应该是答案,无论如何,所以我建议重新措词。 – sehe 2011-12-17 23:50:30

+0

'ignorecase'和'smartcase'都关闭。 '/ \ s \ C [A-Z] \ c [A-Z] * /'选择与'/ \ s [A-Z] [a-zA-Z] * /'完全相同的文本。 – nullflux 2011-12-17 23:58:17

+0

@sehe有时我的回答会转化为评论,反之亦然,当我编写它时。对于那个很抱歉。 – Neil 2011-12-18 00:09:48