Запуск vim в Console2 не показывает цвета должным образом

1927
Rivasa

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

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

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

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

2

1 ответ на вопрос

4
Ingo Karkat

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

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

меры

В 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 в цветовой карте, чтобы они соответствовали (лучше всего пытаться сопоставить аналогичные существующие цвета, иначе выходные данные других программ будут выглядеть странно).

Console color settings

Затем измените 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' 
Не могли бы вы объяснить, как я мог это сделать? Я немного запутался в том, как это сделать. Rivasa 10 лет назад 0
@Link: я добавил шаги; обратите внимание, что я никогда не делал этого явно, но я убежден, что это должно сработать. Ingo Karkat 10 лет назад 0

Похожие вопросы