Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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: enter image description here

But these are the colours I end up getting instead: enter image description here

What's wrong and how do I fix it?

share|improve this question

1 Answer 1

up vote 4 down vote accepted

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).

Console color settings

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'
share|improve this answer
    
Could you explain how I could do this? I'm a bit confused on how to accomplish it. –  Link Nov 2 '13 at 18:08
    
@Link: I've added the steps; note that I've never explicitly done this, but I'm convinced it should work. –  Ingo Karkat Nov 2 '13 at 18:43
    
Thank you! I'll let you know, then. –  Link Nov 2 '13 at 18:45

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.