So I am currently using Console2 for my command line stuff, the background shell is just the cmd.exe
from windows. My problem is that I have the theme set to 'twilight` in vim, and it works perfectly in gVim, but when I run it through the command line, the colours are all messed up. They remain broken even if I use the default Console2 theme or even the twilight theme for Console2.
For illustration: This is what should happen:
But these are the colours I end up getting instead:
What's wrong and how do I fix it?
Answer
The Windows shell (and with it, the Console2 wrapper) is limited to 16 colors, whereas GVIM can use the full 24-bit RGB palette. Therefore, even with colorscheme support for consoles, there usually are limitations.
The best you can achieve is adapt the shell's / Console2's color palette to the (maximum 16) RGB colors used by the twilight color scheme, and then adapt the ctermfg=
and ctermbg=
entries in the colorscheme to the corresponding indices.
Steps
In the colors/twilight.vim
, you'll find the following definitions:
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'
You need to redefine your Console2 colors in the color map to those (best trying to match similar existing colors, or other program output will look weird).
Then, modify the colors/twilight.vim
script, adding the color terminal stuff, e.g. turn this
exe 'hi String guifg='.s:green .' guibg='.s:darkgrey .' gui=none'
into (assuming you've used color #0 for s:darkgrey
and #10 for s:green
)
exe 'hi String ctermfg=10 ctermbg=0 guifg='.s:green .' guibg='.s:darkgrey .' gui=none'
Comments
Post a Comment