Reputation: 1965
Adding the following to .vimrc
works
:hi Folded ctermbg=Grey
but it's still too bright and prominent, so we want to specify a more specific color triplet instead, like so:
:hi Folded ctermbg=#A0A0A0
but vi won't accept it:
Error detected while processing /home/guest/.vimrc:
line 10:
E421: Color name or number not recognized: ctermbg=#A0A0A0
Any suggestions?
Upvotes: 32
Views: 21325
Reputation: 196466
The cterm
in ctermbg
is short for "color terminal". It is used to define the background color when Vim runs in a terminal emulator and can only accept named colors like grey
or cyan
or color numbers like 7
. Hexadecimal values only work in GVim/MacVim and must be used with guibg
/guifg
like that:
hi Folded guibg=#A0A0A0
In your shell, do $ echo $TERM
: it should return something like xterm
, screen
, xterm-256color
or some variants.
If you run Vim in a terminal emulator that can't display more than 8/16 colors ($TERM
doesn't contain 256color
), you won't be able to use a different shade of grey unless you define your own palette in your terminal emulator.
It should look like this:
hi Folded ctermbg=7
or like that:
hi Folded ctermbg=grey
If your terminal emulator advertises itself as "256 colors ready" ($TERM
contains 256color
), you are able to use any color in this chart as long as you use its number (242
) and not its hexadecimal value.
It should look like this:
hi Folded ctermbg=242
Upvotes: 56
Reputation: 1965
In addition to romainl's explanation, the following lines must be added to .vimrc as described here:
if &term =~ "xterm"
"256 color --
let &t_Co=256
" restore screen after quitting
set t_ti=ESC7ESC[rESC[?47h t_te=ESC[?47lESC8
if has("terminfo")
let &t_Sf="\ESC[3%p1%dm"
let &t_Sb="\ESC[4%p1%dm"
else
let &t_Sf="\ESC[3%dm"
let &t_Sb="\ESC[4%dm"
endif
endif
After which any decimal color value chosen from the xterm256 color table provided by romainl should display in PuTTY accordingly.
Upvotes: 0