VIM: Можно ли изменить цвет этих символов: ~!%^& *() - + = [] {} ,. <>?: /; как Visual Studio делает?Vim: символы символов C++
ответ
Синтаксис 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
уже используется. Второе и третье совпадения - это бит kludge, который выделяет '/'
без соответствующих префиксов комментариев, которые затем перекрывают выделение комментария и прерывают все. Опция «display» указывает Vim, что нет необходимости искать этот матч, если он не будет отображаться - см. :help syn-display
для объяснения, если хотите!
После того, как вы определили соответствие синтаксиса, вы можете связать его с кульминационной группы, например:
hi def link cUserSpecialCharacter cCharacter
Это поставит его с уже определены cCharacter
группу, поэтому он будет получать все, выделяя, что получает - в этом случае, Character
. Вы можете увидеть хороший список групп подсветки внизу c.vim для примеров. Если вы действительно хотите, вы можете также жёстко изюминки, делая что-то вроде: (. Произвольному примера - мое текущего подсвечивания для Error
группы)
hi cUserSpecialCharacter term=reverse ctermfg=15 ctermbg=1 guifg=#ffffff guibg=#800000
См :help hi
для получения дополнительной информации по этому вопросу, или просто :hi
, чтобы увидеть список определенных выделов - множество примеров. Я бы рекомендовал не делать этого, поскольку он не будет меняться с помощью цветовых схем.
Да, вам нужно отредактировать C цветовую тему в vimfiles/цвета/c.vim Я не знаю, все варианты тему можно использовать, но я уверен, что они зарегистрированы на http://vim.org/
Хотя я все для всех читаю документацию, просто указывая на то, что это не большой ответ ... и вы ошиблись. Это подсветка синтаксиса, а не цветовая схема, поэтому она имеет синтаксис /, а не цвет /. Кроме того, vimfiles - это каталог add-on/override, используемый для всех версий Vim; встроенные скрипты находятся в каталоге vimXX. – Cascabel
Цветовая схема загружается синтаксисом, определяющим, что это такое, цветовая схема определяет, какой цвет использовать, таким образом, большинство раз в то время, когда совпадает с номером цвета, выделяющим тип синтаксиса. – ewanm89
- 1. Vim показывает мусор символов
- 2. Математические символы в vim
- 3. Vim UTF8 символов в терминале
- 4. vim и непризнанные символы
- 5. Vim autocmd E488: Подвесные символы
- 6. Предотвращать скрытие символов Vim
- 7. Классы символов в VIM
- 8. преобразование символов в vim
- 9. C++: найти совпадающие символы в массиве символов
- 10. Печать массива показывает символы вместо символов C++
- 11. количество символов минус HTML-символы C#
- 12. Добавить символы в массив символов C++
- 13. Неожиданные символы в конце массива символов - C
- 14. vim: заменить символы из backreference
- 15. vim: количество символов в буфере от функции
- 16. VIM get E488 Персональные символы
- 17. Просмотр \ n и \ r символов в Vim?
- 18. Выполнять команду замены vim, которая включает символы '/'
- 19. Как искать все символы CJK в vim?
- 20. VIM поиск символов, начинающихся с амперсанда
- 21. Скрытие символы табуляции в Vim
- 22. vim vnoremap: E488 Обратные символы
- 23. Расширенные символы Vim и ASCII?
- 24. похорошела вкладки символы в Vim
- 25. Отключить специальные символы в VIM
- 26. Завершающие символы в VIM редакторе
- 27. Сопряженные символы лимитированных символов
- 28. Набор символов Специальные символы
- 29. символы Печать из массива символов
- 30. vim не отображает cp1252 символов
Спасибо, Jefromi за ваш тщательный ответ. Я сделал тест, и он отлично работает. Есть только незначительная проблема; Символ «-» не выделяется. – Tassos
Мое лучшее предположение заключается в том, что это часть другого определения синтаксиса, которое имеет приоритет. Синтаксические определения C довольно сложны, поэтому, к сожалению, я не знаю достаточно, чтобы указать, где это может быть. Вы можете выполнить поиск типа "/ syn * \ (match \ | region \) [^"] * "[^"] * - "искать вещи, содержащие" - ", и посмотреть, не найдете ли что-нибудь? – Cascabel