Синтаксис C / C ++ определяется в синтаксисе / c.vim и синтаксисе / cpp.vim. Если вы используете Linux, основной каталог синтаксиса находится в / usr / share / vimXX /, где XX - версия (например, моя - в vim72). Я не знаю об установочных каталогах на других ОС, но я уверен, что вы можете найти их. Я бы предложил скопировать их и поместить в вашу пользовательскую директорию vim (например, в Linux, $ HOME / .vim / syntax / c.vim и т. Д.). Затем вы можете добавить все, что вам нравится.
Синтаксис C ++ является источником синтаксиса C, поэтому любые символы, которые вы хотите выделить в обоих, должны идти в c.vim, а все, что только для C ++, должно быть в cpp.vim.
Чтобы получить подсветку синтаксиса для определенных символов, вам нужно использовать оператор сопоставления синтаксиса, например:
syn match cUserSpecialCharacter display "[~!%^&*()-+=[\]{},.<>?:;]"
syn match cUserSpecialCharacter display "/[^*/]"me=e-1
syn match cUserSpecialCharacter display "/$"
Я назвал это cUserSpecialCharacter
, поскольку cCharacter
и cSpecialCharacter
уже используются. Второе и третье совпадения являются небольшим препятствием для выделения '/'
без сопоставления префиксов комментариев, что затем переопределяет выделение комментариев и прерывает все. Опция «display» сообщает Vim, что ему не нужно искать это совпадение, если оно не будет отображаться - см. :help syn-display
объяснение, если хотите!
Как только вы определили совпадение синтаксиса, вы можете связать его с группой выделения, например:
hi def link cUserSpecialCharacter cCharacter
Это поместит его в уже определенную группу cCharacter
, так что он получит любое выделение - в данном случае Character
. Вы можете увидеть хороший список групп подсветки в нижней части c.vim для примеров. Если вы действительно хотите, вы также можете жестко кодировать выделение, выполнив что-то вроде:
hi cUserSpecialCharacter term=reverse ctermfg=15 ctermbg=1 guifg=#ffffff guibg=#800000
(Произвольный пример - мое текущее выделение для группы Error
.) Подробнее об этом см. :help hi
или просто :hi
, чтобы увидеть список определенных выделений - множество примеров. Я бы рекомендовал не делать этого, так как это не изменится с цветовыми схемами.