Как узнать определенное значение цвета, которое текущая цветовая схема использует для определенного материала?
Мне нужно это, чтобы закончить плагин, который я делаю, чтобы изменить цвета строки состояния в зависимости от режима.
Однако я столкнулся с очевидной проблемой, как я узнаю, какую тему использует пользователь? И даже если бы я знал, я не могу сделать конкретные цвета для каждой темы.
Итак, как узнать цвета переднего плана и фона, которые текущая тема использует для строки состояния, например.
РЕДАКТИРОВАТЬ 1:
На случай, если мне неясно, я ищу способ узнать ctermfg
/bg
а также guifg
/bg
для определенных вещей. Прямо сейчас статусная строка.:)
РЕДАКТИРОВАТЬ 2:
Видимо если я :hi StatusLine
Я получаю то, что мне нужно, но мне нужно уточнить это, чтобы получить только ценность, а не все. Думаю, мне придется использовать какое-то регулярное выражение, чтобы узнать значение. Если кто-нибудь знает более простой способ, пожалуйста, поделитесь им (или если вы уже поняли это с помощью регулярного выражения). Спасибо!
2 ответа
Вы можете использовать synIDattr()
функция для запроса различных атрибутов (например, цвета переднего плана и фона) подсветки синтаксиса. Чтобы определить идентификатор группы выделения, hlID()
может быть использован. Увидеть :help hlID()
:
:echo synIDattr(synIDtrans(hlID('StatusLine')), 'fg')
Вы можете получить фон с
:echo &background
в соответствии с :help background
должен быть foreground
настройки тоже, но это не работает для меня.
Редактировать: есть переменные guibg
, guifg
, ctermbg
а также ctermfg
в :hi[glight]