Где определяется цвет линии курсора? - PullRequest
7 голосов
/ 17 июля 2010

Если я установлю опцию cursorline, моя текущая линия курсора будет подчеркнута, и все символы, цвет которых не указан, также станут желтыми (желтый появляется только в том случае, если обычная группа выделения не затронута).Интересно, где этот цвет (желтый) определяется?

Редактировать: Я знаю о CursorLine группа подсветки.Проблема в том, что в используемой по умолчанию схеме цветов, которую я использую, она не определена, и :hi CursorLine показывает

CursorLine     xxx term=underline cterm=underline

, где xxx окрашен в желтый цвет и подчеркнут.Я не хочу менять цвет, я хочу добавить поддержку cursorline для 2html.vim -подобного плагина, поэтому мне нужна группа выделения / переменная / и т. Д., Откуда я могу получить этот желтый цвет.

Ответы [ 3 ]

6 голосов
/ 17 июля 2010

Редактировать: Вы можете запросить большинство значений для определенной группы подсветки с помощью функции synIDattr().Например, будет напечатан цвет переднего плана, присвоенный CursorLine, если он был установлен:

:echo synIDattr(synIDtrans(hlID("CursorLine")), "fg")

Вы также можете определить состояние underline, undercurl и т. Д. С помощью аналогичных вызовов..

Пара предупреждений: synIDattr() глючит и неполон.Иногда он неожиданно возвращает -1 и в настоящее время не позволяет проверять все атрибуты.(Предполагается, что в разработке находится исправление для предстоящего выпуска Vim.) Для получения дополнительной информации см. Эти темы:

Проблема с synIDattr ()

Программноопределить текущую настройку «выделения»?

Если synIDattr() не будет делать то, что вы хотите, может быть проще перенаправить вывод команды highlight в переменную и проанализировать ее самостоятельно:

:redir => cursorline_highlight | silent highlight CursorLine | redir END
:echo "CursorLine highlight: " . cursorline_highlight

Цвет линии курсора можно установить с помощью команды highlight, например, такой:

:highlight CursorLine  term=underline  guibg=#555555  cterm=underline

Обычно это делается в файле цвета Vim., который содержит много таких строк для определения цветов для частей пользовательского интерфейса Vim, а также для общих синтаксических элементов, таких как строки, числа, ключевые слова и т. д.

Вы можете указать Vim, какую цветовую схему использовать, выполнив командукоманда colorscheme, за которой следует имя схемы.Вот несколько примеров:

:colorscheme desert
:colorscheme evening
:colorscheme koehler

Однако большинство схем цветов, включенных в Vim, на самом деле не содержат команды выделения для элемента CursorLine, поэтому Vim просто использует встроенную линию курсора по умолчанию.раскраска.

Чтобы изменить цвета, используемые Vim для линии курсора, вы можете включить свою собственную команду highlight в свой файл .vimrc ( после , которую вы выполнили любой colorscheme командуиначе ваши основные цвета могут быть очищены).Более того, вы можете создать свой собственный файл цветов и добавить туда соответствующее выделение.(Облегчите себе задачу, найдя приемлемую цветовую схему, затем скопируйте ее и внесите любые изменения, которые вам нравятся.)

Vim включает несколько файлов цветовой схемы, и вы можете найти еще много онлайн.Вот сайт с предварительным просмотром нескольких сотен:

http://code.google.com/p/vimcolorschemetest/

См. Следующие разделы справки для получения дополнительной информации:

:help :colorscheme
:help :highlight
:help hl-CursorLine
1 голос
/ 17 марта 2011

Также проверьте http://vim.wikia.com/wiki/Configuring_the_cursor, чтобы узнать о других способах его настройки

0 голосов
/ 17 июля 2010

В колоцемах свойство цвета линии курсора называется просто «Курсорная линия».Например, wombat colorscheme использует эту строку:

hi CursorLine guibg=#2d2d2d

Если вы хотите изменить цветовую схему по умолчанию, файлы хранятся (в большинстве дистрибутивов Linux) в / usr / share / vim / vim72 / colors.

Только одно примечание: опция CursorLine работает только с Vim 7 и выше, поэтому в очень невероятном случае вы когда-либо используете эту цветовую схему с версией до 7 (или Vi), вы должны запросить версию нафайл схемы цветов, например:

if version >= 700
  hi CursorLine guibg=#2d2d2d
endif
...