Комментарии 22
Спасибо! Лаконично и доступно.
А что за шрифт и цветовая схема на скринах?
Вообще полезная статья, теперь можно подсвечивать собственные классы и функции, спасибо!
Для этого есть специальные плагины, TagHighlight например.
Не мешало бы упомянуть, что в vim шикарная встроенная документация, в частности исчерпывающая информация по сабжу доступна в :help syntax.
Да, думаю, большинству известно что справка у Vim весьма обширная и качественная.
И тем не менее, даже после статьи и прочтения vim +«help highlight-link», я не понимаю как работаю link'и и как в итоге эти группы применяются. Разъясните пожалуйста.
И тем не менее, даже после статьи и прочтения vim +«help highlight-link», я не понимаю как работаю link'и и как в итоге эти группы применяются. Разъясните пожалуйста.
:hi — отвечает, по сути, за представление подсветки ситнаксиса. В цветовых схемах используется следующий формат команды:
Определяет стиль региона StatusLine как заданный цвето текста (guifg), цвет фона (guibg) и стиль начертания (gui). Стилем может быть любой идентификатор, но есть соглашение про несколько стандартных: что стиль Keyword обычно отвечает за ключевые слова, а Comment — за коментарий. Но вообще можете задать любо имя, хот PesNaLdine.
Далее, в описании подсветки вы задаете сначала стили с именами привязанными к структуре языка — например pascalFuncionCall, pascalCompilerOptions, и т.д. А далее задается «представление», путем отображения языковых стилей, на общие стили, которые определены в ваших цветовых схемах:
Подсвечивает регион pascalFunctionCall как регион Function, а pascalCompilerOptions как регион PreProc. Просто стиль слева берется целиком из стиля справа. Так как обычно в языках много конструкций, а в цветовых схемах определены только общие для всех языков конструкции, на один стиль часто ссылается несколько названий регинов разметки (как у меня в примерах — стили ключевых слови экранирующих символов «привязоны» к одному и томуже стили из цветовых схем Keyword).
hi StatusLine guifg=#f6f3e8 guibg=#444444 gui=italic
hi Comment guifg=#99968b gui=italic
Определяет стиль региона StatusLine как заданный цвето текста (guifg), цвет фона (guibg) и стиль начертания (gui). Стилем может быть любой идентификатор, но есть соглашение про несколько стандартных: что стиль Keyword обычно отвечает за ключевые слова, а Comment — за коментарий. Но вообще можете задать любо имя, хот PesNaLdine.
Далее, в описании подсветки вы задаете сначала стили с именами привязанными к структуре языка — например pascalFuncionCall, pascalCompilerOptions, и т.д. А далее задается «представление», путем отображения языковых стилей, на общие стили, которые определены в ваших цветовых схемах:
hi link pascalFunctionCall Function
hi link pascalCompilerOptions PreProc
Подсвечивает регион pascalFunctionCall как регион Function, а pascalCompilerOptions как регион PreProc. Просто стиль слева берется целиком из стиля справа. Так как обычно в языках много конструкций, а в цветовых схемах определены только общие для всех языков конструкции, на один стиль часто ссылается несколько названий регинов разметки (как у меня в примерах — стили ключевых слови экранирующих символов «привязоны» к одному и томуже стили из цветовых схем Keyword).
В таком случае в хелпе я не нашёл полного перечня стилей (тех самых ключевых слов, которые в итоге и задают цвет текста). Какие-то файлы, судя по всему цветовых схем обнаружил тут (/usr/share/vim/vim72/colors/). Однако default.vim практически пустой.
Правильно ли я понял, что могу задать свой цвет с абсолютно любым именем, и как только я его свяжу (link) с каким либо keyword или region или еще чем, то эти самые куски текста будут подсвечены указанным мной стилем?
И всё же хотелось бы базировать свою раскраску на стандартной, где её можно увидеть?
Правильно ли я понял, что могу задать свой цвет с абсолютно любым именем, и как только я его свяжу (link) с каким либо keyword или region или еще чем, то эти самые куски текста будут подсвечены указанным мной стилем?
И всё же хотелось бы базировать свою раскраску на стандартной, где её можно увидеть?
>что могу задать свой цвет с абсолютно любым именем
Верно.
>И всё же хотелось бы базировать свою раскраску на стандартной, где её можно увидеть?
Вот отсюда черпай названия и «линкуй» свои навзания к этим.
Верно.
>И всё же хотелось бы базировать свою раскраску на стандартной, где её можно увидеть?
hi Comment guifg=#99968b gui=italic
hi Todo guifg=#8f8f8f gui=italic
hi Constant guifg=#8a11a8 gui=none
hi String guifg=#95e454 gui=italic
hi Identifier guifg=#cae682 gui=none
hi Function guifg=#cae682 gui=none
hi Type guifg=#cae682 gui=none
hi Statement guifg=#8ac6f2 gui=none
hi Keyword guifg=#8ac6f2 gui=none
hi PreProc guifg=#e5786d gui=none
hi Number guifg=#e5786d gui=none
hi Special guifg=#e7f6da gui=none
hi Delimiter guifg=#e5786d gui=none
Вот отсюда черпай названия и «линкуй» свои навзания к этим.
Статья мне показалась похожей на пересказ хелпа, возможно просто читал не слишком внимательно. По крайней мере одна тема из хелпа в статье не рассматривается (синхронизация подсветки при редактировании).
Смогу ответить, если вы скажете, как определить «вот это строка». Ведь вы файл редактируете, а значит опираться на оффсет по символам нельзя. Да и как сохранить эту информацию в файл? Идея умеет получать эту информацию на основе полного семантического анализа. Однако, если это легко регекспами получить — то можно сделать так (например подсвечивать во всех строках):
:syn region start=/"/ end=/"/ contains=sqlKeyword,sqlOperator,sqlStatement,sqlFunction,sqlNumber,sqlType
>знаю. нечестно, правда?
Да ничего нечестного. Просто (лично мне) вим нравится легкостью, которая убивается таким вот инструментарем.
>ну как-как. внутри кавычек, натурально.
Так я этот вариант и привел. Только внутри кавычек может быть и не SQL — а XPath или просто строка.
Да ничего нечестного. Просто (лично мне) вим нравится легкостью, которая убивается таким вот инструментарем.
>ну как-как. внутри кавычек, натурально.
Так я этот вариант и привел. Только внутри кавычек может быть и не SQL — а XPath или просто строка.
Там опечатки «давайте раскарасим некотрое подмножество язык javascript:». Особенно порадовало слово «раскарасим».
Спасибо за минусы, друзья. Я всего лишь хотел указать на опечатку.
Минусуют потому, что сообщения об опечатках замусоривают коментарии, так как устаревают сразу же после правки, и поэтму их принято слать автору в личку. А для того чтобы слать в личку было удобно, стоит поставить расширение для хрома, которое будет слать сообщение автоматом по Ctrl+Enter
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Подсветка синтаксиса в VIM: полное погружение