Existem algumas coisas para esclarecer aqui:
Bash é um shell, que em si não é tanto onde você quer gerenciar cores - isso é mais uma questão do terminal (gnome-terminal, rxvt, xterm, etc). Os terminais geralmente têm 16, 88 ou 256 paletas de cores, que são cores predefinidas que podem ser renderizadas no console. Cada cor tem um número, de 0 a 15/87/255. Alguns terminais permitem ajustar quais cores RGB específicas são atribuídas a quais números, mas normalmente são 0 para preto, 1 para vermelho, etc.
Quanto ao vim, você quer dizer vim, ou gvim (o aplicativo GUI)? Estes são configurados de maneira diferente em relação à cor. O Vim permite que você altere quais das cores de terminal disponíveis (numeradas) são atribuídas a quais tipos de texto (texto normal, texto de comentário, texto visualmente selecionado, etc). Dê uma olhada na ajuda do vim nos comandos "colorscheme" e "highlight". Em aplicações de terminal, você está confinado às cores disponíveis no seu terminal (veja acima), mas pode atribuí-las livremente, definindo seu próprio esquema de cores.
O Gvim, por outro lado, normalmente permite que você especifique os trios de cores RGB e, portanto, tem muito mais flexibilidade sobre o esquema de cores.
Por exemplo, no gvim, isso definirá sua cor de texto "normal" como um trio arbitrário hexadecimal RRGGBB:
: oi Guifg normal = # 123456
No vim, isso definirá a cor do texto "normal" para a cor terminal 1, que geralmente é vermelha:
: oi Normal ctermfg = 1
Sua aplicação de terminal (xterm, gnome-terminal, rxvt) pode então permitir que você ajuste o que "vermelho" realmente significa, em termos de RGB. Algumas pessoas, por exemplo, acham que o padrão "azul" nos aplicativos do terminal é muito escuro para ser lido, então ajuste-o para ficar mais claro.