2011-12-17 53 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