Запуск 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'