2011-12-17 2 views
3

У меня есть .vimrc файл, содержащий следующую строку:ВИМ матч синтаксис является неправильным ([AZ] сопрягает все буквенные символы)

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

В теории, он должен соответствовать любой набор буквенных символов, которое с префиксом пробела и начинается с заглавной буквы. Это работает, как следует, когда я запускаю его с vim 7.3 на Ubuntu 11.11. Однако, когда я отправил .vimrc на сервер, на котором работает vim 7.0 на CentOS 5.6, он соответствует всем словам с префиксом пробела, а не только словами, начинающимися с заглавной буквы.

Я искал несколько часов, чтобы понять это, но я озадачен. Я попробовал [[:upper:]] вместо [A-Z], но придумал те же результаты. С помощью /[A-Z] и /[[:upper:]] для поиска правильно выбираются только символы верхнего регистра. Запуск ls | grep "[A-Z]" в bash выделяет только файлы с прописными буквами.

ответ

4

Моя следующая догадка (после IGNORECASE) будет ошибка в конфигурации самой подсветки синтаксиса сценария:

Некоторые языки не чувствительны к регистру, например, Pascal. Другие, такие как C, являются с учетом регистра. Вы должны сказать, какой тип у вас есть следующие команды:

:syntax case match 
:syntax case ignore 

Не могли бы вы попробовать то, что происходит, когда вы конкретно добавить :syntax case match к соединению (или место, где поддельный ignore исходит от)?

+0

'синтаксический кейс match' решил это! Огромное спасибо! – nullflux

1

У вас случайно нет ignorecase? Что вы получаете с /\s\C[A-Z]\c[A-Z]*/?

+3

Вы должны сказать это как ответ. Сейчас это должен комментарий. Я подозреваю, что это действительно должен быть ответом, так или иначе, поэтому я бы предложил переписать. – sehe

+0

'ignorecase' и' smartcase' оба выключены. '/ \ s \ C [A-Z] \ c [A-Z] * /' выбрал, к сожалению, тот же самый текст, что и '/ \ s [A-Z] [a-zA-Z] * /'. – nullflux

+0

@sehe Иногда мой ответ превращается в комментарий или наоборот, пока я его сочиняю. Извини за это. – Neil

Смежные вопросы