Как узнать определенное значение цвета, которое текущая цветовая схема использует для определенного материала?

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

Однако я столкнулся с очевидной проблемой, как я узнаю, какую тему использует пользователь? И даже если бы я знал, я не могу сделать конкретные цвета для каждой темы.

Итак, как узнать цвета переднего плана и фона, которые текущая тема использует для строки состояния, например.

РЕДАКТИРОВАТЬ 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]

Другие вопросы по тегам