A execução do vim no Console2 não mostra as cores corretamente

2

Então eu estou usando atualmente Console2 para o meu material de linha de comando, o shell de fundo é apenas o cmd.exe das janelas. Meu problema é que eu tenho o tema definido como 'crepúsculo' no vim, e funciona perfeitamente no gVim, mas quando eu o executo pela linha de comando, as cores estão bagunçadas. Eles permanecem quebrados mesmo se eu usar o tema padrão do Console2 ou até mesmo o tema crepuscular para o Console2.

Por exemplo: é isso que deve acontecer:

Masestassãoascoresqueacaboficandoemvezdisso:

O que há de errado e como corrigi-lo?

    
por Rivasa 02.11.2013 / 17:17

1 resposta

4

O shell do Windows (e, com ele, o Console2 wrapper) é limitado a 16 cores , enquanto o GVIM pode usar a paleta RGB completa de 24 bits. Portanto, mesmo com o suporte ao esquema de cores para consoles, geralmente há limitações.

O melhor que você pode conseguir é adaptar a paleta de cores do shell / Console2 às cores RGB (máximo 16) usadas pelo esquema de cores twilight e depois adaptar as entradas ctermfg= e ctermbg= no esquema de cores para os índices correspondentes.

Etapas

No colors/twilight.vim , você encontrará as seguintes definições:

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'

Você precisa redefinir suas cores do Console2 no mapa de cores para aquelas (é melhor tentar combinar cores existentes semelhantes ou a saída de outro programa parecerá estranha).

Em seguida, modifique o script colors/twilight.vim , adicionando o material do terminal colorido, por exemplo vire isto

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

(assumindo que você usou a cor # 0 para s:darkgrey e # 10 para s:green )

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