2

Так что в настоящее время я использую Console2 для своей командной строки, фоновая оболочка - это просто cmd.exe из windows. Моя проблема в том, что у меня установлена тема 'сумерки' в vim, и она отлично работает в gVim, но когда я запускаю ее через командную строку, все цвета перепутаны. Они остаются сломанными, даже если я использую тему Console2 по умолчанию или даже тему сумерек для Console2.

Для иллюстрации: вот что должно произойти:

Но вот цвета, которые я получаю вместо этого:

Что не так и как мне это исправить?

1 ответ1

4

Оболочка Windows (а вместе с ней и оболочка Console2 ) ограничена 16 цветами, тогда как GVIM может использовать полную 24-битную палитру RGB. Поэтому даже при поддержке консолей colorcheme обычно существуют ограничения.

Лучшее, что вы можете достичь, - это адаптировать цветовую палитру оболочки / Console2 к (максимум 16) цветам RGB, используемым сумеречной цветовой схемой, а затем адаптировать записи ctermfg= и ctermbg= в схеме цветов к соответствующим индексам.

меры

В colors/twilight.vim вы найдете следующие определения:

let s:grey_blue = '#8a9597'
let s:light_grey_blue = '#a0a8b0'
let s:dark_grey_blue = '#34383c'
let s:mid_grey_blue = '#64686c'
let s:beige = '#ceb67f'
let s:light_orange = '#ebc471'
let s:yellow = '#e3d796'
let s:violet = '#a999ac'
let s:green = '#a2a96f'
let s:lightgreen = '#c2c98f'
let s:red = '#d08356'
let s:cyan = '#74dad9'
let s:darkgrey = '#1a1a1a'
let s:grey = '#303030'
let s:lightgrey = '#605958'
let s:white = '#fffedc'

Вам необходимо переопределить цвета Console2 в цветовой карте, чтобы они соответствовали этим (лучше всего попытаться сопоставить аналогичные существующие цвета, иначе выходные данные другой программы будут выглядеть странно).

Настройки цвета консоли

Затем измените скрипт colors/twilight.vim , добавив в него цветной терминал, например, включите

exe 'hi String         guifg='.s:green             .' guibg='.s:darkgrey        .' gui=none'

в (при условии, что вы использовали цвет # 0 для s:darkgrey и # 10 для s:green)

exe 'hi String         ctermfg=10 ctermbg=0 guifg='.s:green             .' guibg='.s:darkgrey        .' gui=none'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .