0

1

After I install solarized, the background color didn't come out as expected. vim uses terminal black background instead of using solarized's blue background. My terminal is also set to Xterm-256color. I've tried several option include this line let g:solarized_termtrans = 1, but it still doesn't make any difference. What did I do wrong here?

2 Answers 2

3

Ah, yes. I had that same problem.

you should add

"set t_Co=256           " No        
set t_Co=16

also, the solarized options are

"g:solarized_termcolors=   16      |   256
"g:solarized_termtrans =   0       |   1
"g:solarized_degrade   =   0       |   1
"g:solarized_bold      =   1       |   0
"g:solarized_underline =   1       |   0
"g:solarized_italic    =   1       |   0
"g:solarized_contrast  =   "normal"|   "high" or "low"
"g:solarized_visibility=   "normal"|   "high" or "low"
"g:solarized_hitrail   =   0       |   1
"g:solarized_menu      =   1       |   0

for which I, personally, have used

let g:solarized_termcolors=   16
let g:solarized_termtrans =   0       
let g:solarized_degrade   =   0       
let g:solarized_bold      =   1       
let g:solarized_underline =   1       
let g:solarized_italic    =   1       
let g:solarized_contrast  =   "normal"
let g:solarized_visibility=   "normal"
let g:solarized_hitrail   =   0       
let g:solarized_menu      =   1  

I also set my terminal itself up for solarized. This is the relevant section from my ~/.Xresources, which I copied from the internet somewhere.

Note that I have removed the "*background" line, which maybe exactly what you need, but anyway, this is working for me. However, it does change your teminal's colours.

!! ================= SOLARIZED =============================================================

!! drop in Solarized colorscheme for Xresources/Xdefaults

!!SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      RGB         HSB
!!--------- ------- ---- -------  ----------- ---------- ----------- -----------
!!base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
!!base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
!!base01    #586e75 10/7 brgreen  240 #585858 45 -07 -07  88 110 117 194  25  46
!!base00    #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195  23  51
!!base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
!!base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
!!base2     #eee8d5  7/7 white    254 #e4e4e4 92 -00  10 238 232 213  44  11  93
!!base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
!!yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
!!orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
!!red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
!!magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
!!violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
!!blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
!!cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
!!green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60

#define S_base03        #002b36
#define S_base02        #073642
#define S_base01        #586e75
#define S_base00        #657b83
#define S_base0         #839496
#define S_base1         #93a1a1
#define S_base2         #eee8d5
#define S_base3         #fdf6e3
#define S_yellow        #b58900
#define S_orange        #cb4b16
#define S_red           #dc322f
#define S_magenta       #d33682
#define S_violet        #6c71c4
#define S_blue          #268bd2
#define S_cyan          #2aa198
#define S_green         #859900

!# I removed this, causing some GUI problems, I think
!#*background:            S_base03
*foreground:            S_base00
*fading:                40
*fadeColor:             S_base03
*cursorColor:           S_base1
*pointerColorBackground:S_base01
*pointerColorForeground:S_base1

!! black dark/light
*color0:                S_base02
*color8:                S_base03

!! red dark/light
*color1:                S_red
*color9:                S_orange

!! green dark/light
*color2:                S_green
*color10:               S_base01

!! yellow dark/light
*color3:                S_yellow
*color11:               S_base00

!! blue dark/light
*color4:                S_blue
*color12:               S_base0

!! magenta dark/light
*color5:                S_magenta
*color13:               S_violet

!! cyan dark/light
*color6:                S_cyan
*color14:               S_base1

!! white dark/light
*color7:                S_base2
*color15:               S_base3
1

256 colors

The solarized palette does not include all the proper colors for that most modern terminals include by default in the list of color attributes provided by your virtual terminal. As far as I understand, your virtual terminal provides a list of colors (from color0 to color255 - i.e. 256 colors) represented usually as hex values. This allows your terminal inside of a graphical environment (not tty) to display each color {0..255} to be displayed with a certain color.


You can view all 256 colors in your virtual terminal by running this short bash script I made. You should see something like this:

256 color picker screenshot


For example, I use the st virtual terminal in linux, and in order to get the solarized colorscheme within vim is to set the terminal colors 0-15 inside st's configuration file like so:

static const char *colorname[] = {
    /* solarized dark */
    "#073642",  /*  0: black    */
    "#dc322f",  /*  1: red      */
    "#859900",  /*  2: green    */
    "#b58900",  /*  3: yellow   */
    "#268bd2",  /*  4: blue     */
    "#d33682",  /*  5: magenta  */
    "#2aa198",  /*  6: cyan     */
    "#eee8d5",  /*  7: white    */
    "#002b36",  /*  8: brblack  */
    "#cb4b16",  /*  9: brred    */
    "#5f8700",  /* 10: brgreen  */
    "#d8b822",  /* 11: bryellow */
    "#0087ff",  /* 12: brblue   */
    "#6c71c4",  /* 13: brmagenta*/
    "#00afaf",  /* 14: brcyan   */
    "#fdf6e3",  /* 15: brwhite  */
    /* special colors */
    [256] = "#002b36", /* background */
    [257] = "#93a1a1", /* foreground */
};

/*
 * Default colors (colorname index)
 * foreground, background, cursor
 */
static unsigned int defaultfg = 257;
static unsigned int defaultbg = 256;
static unsigned int defaultcs = 257;
static unsigned int defaultrcs = 15;

You can see that st, like all (that I know of) modern virtual terminals, uses hex values to represent each 256 color.


You should note that for the solarized colorscheme in vim, you HAVE to have at least color0 and color8 set properly because these two colors are not found by default in the list of {0..255} colors. From there you can use colors similar to the colors used in the range {0..15} by the solarized scheme, but I simply make my entire console solarized and let solarized so its job normally.

vim

As far as the configuration inside your vimrc, I have found a few things to be worthy of mentioning ragarding the solarized colorscheme.

let g:solarzied_termcolors=256 messes up the colors in a terminal even if it supports 256 colors. This is probably because when solarized_termcolors is 256, it is probably expecting a GUI like gvim. So, it is best to leave that setting at its default.

I have noticed no difference between set t_Co=16 and set t_Co=256, but you probably want set t_Co=16 inside a virtual terminal, and you probably want set t_Co=8 inside a tty terminal.

Also, I would do let g:solarized_italic=0 inside your vimrc for this reason: in many terminals, if vim cannot properly display italics (even when it is supported), it often reverts to the reverse reverse attribute. This means that if you had a dark solarized background, and you have italics enabled with 1, then, for example, comments and anything else that should be italicized will have a light gray background with dark blue text. I find this to be very distracting and it is not very easy to debug because all you think is "why is this stuff reversed?" and you are not quite sure of the source.

Finall, I would put let g:solarized_bold=1 in your vimrc (or leave it as the default, as it is enabled by default). Bold will probably be interpreted correctly, and I have noticed that if bold is not enabled, then it causes problems in pop-up menus (actually when solarized_bold is disabled with 0, I things in menus are oddly enough bold - which is counter intuitive, but which is why you should just let it be bold ... this is actually the default, so you can leave it out of your vimrc if you want).

Here is what it might look like when you have your terminal's 256-colors ({0..15}) set up "properly":

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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