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

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

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

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

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

1 ответ

Решение

Оболочка 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'
Другие вопросы по тегам