As cores do Vim não aparecem corretamente no terminal tmux rodando dentro do terminal rxvt-unicode

2

Estou usando o Debian (Jessie).

Meu arquivo ~ / .vimrc contém a seguinte declaração.

colorscheme murphy

Meu arquivo ~ / .Xresources contém as seguintes propriedades.

URxvt.background: #000000
URxvt.foreground: #e0e0e0
URxvt.scrollBar: false
URxvt.borderless: true
URxvt.font:xft:Bitstream Vera Sans Mono:pixelsize=16

Quando eu abro vim dentro do meu terminal rxvt-unicode ( urxvt ) eu recebo a saída esperada.

Masquandoeuabrotmuxdentrodeurxvte,emseguida,lançovimdentrodoterminaltmux,ascoressãomuitobrilhantes.

Como posso corrigir isso?

    
por Susam Pal 27.04.2014 / 08:07

2 respostas

3

O problema ocorre porque o terminal rxvt-unicode (urxvt) suporta apenas 88 cores, enquanto o terminal tmux suporta 256.

Saída do urxvt:

susam@nifty:~$ tput colors
88

Como resultado, quando o tmux inicia, ele usa apenas 8 cores

susam@nifty:~$ tput colors
8

Adicionar o seguinte comando tmux a ~ / .tmux.conf não ajuda.

set -g default-terminal screen-256color

Com essa linha em ~ / .tmux.conf, quando o tmux inicia, parece estar usando 256 cores.

susam@nifty:~$ tput colors
256

No entanto, isso não ajuda porque, embora o tmux pareça estar usando 256 cores, o terminal rxvt-unicode (urxvt) subjacente não pode exibi-las adequadamente, já que suporta apenas 88 cores. Como resultado, o Vim ainda exibe cores muito brilhantes.

Solução: instale o pacote rxvt-unicode-256color.

Existe um pacote rxvt-unicode-256color disponível no Debian que vem com o terminal urxvt que suporta 256 cores. A instalação do rxvt-unicode-256color resolveu o problema.

Os comandos que usei:

aptitude update
aptitude purge rxvt-unicode
aptitude install rxvt-unicode-256color

As cores parecem um pouco diferentes agora.

Masaexperiênciaéconsistentecomotmux.

    
por 27.04.2014 / 08:07
0

A resposta de Susam Pal é ótima e funcionou para mim. No entanto, eu ainda tinha um pequeno problema com ele, pois man destacava os resultados da pesquisa em itálico . De acordo com a última entrada no FAQ do tmux :

Screen's terminfo description lacks italics mode and has standout mode in its place, but using the same escape sequence that urxvt uses for italics.

Veja como corrigir esse problema no terminal (adaptado do FAQ):

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen-256color"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it-256color|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\E[27m,/' \
  -e '$s/$/ sitm=\E[3m, ritm=\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

Em seguida, altere a seguinte linha do tmux em ~ / .tmux.conf:

set -g default-terminal screen-it-256color
    
por 11.01.2015 / 15:28