tmux, Vim e Solarizado

19

Instalações

Navegando pelo tmux , Vim e Solarized , posso encontrar muitas reclamações sobre 256 cores e "experiência do usuário". Bem, estou tendo o "problema" oposto, ou seja, o Vim funciona bem com um tema Solarized completo apenas no tmux .

fundo

Estou mexendo e ajustando um pouco agora com o esquema de cores do meu terminal Ubuntu e Guake e quase cheguei à perfeição alcançada quando estou usando o tmux , o que, por sua vez, significa sempre. Agora estou tentando entender por que isso está acontecendo.

Aqui abaixo, existem dois terminais, o da esquerda está executando apenas o Vim (mostrando a corrente .vimrc), enquanto o outro está executando o Vim dentro de uma sessão do tmux . Como você pode ver claramente, somente na sessão do tmux as fontes estão em negrito, o que eu acho que está correto (ou não?).

insira a descrição da imagem aqui

Questão

Por que o tmux permite fontes em negrito, enquanto o terminal, onde o tmux está sendo executado, não? É um bug ou um recurso?

Atcold
fonte
Qual é a saída de entrada echo $TERMe saída de tmux?
precisa saber é o seguinte
tmux diz screenenquanto que o terminal diz xterm:)
Atcold
@jasonwryan leu a outra pergunta do OP aqui e a resposta de Gilles para uma similar aqui . Aparentemente, $TERMisso não é relevante.
terdon
@terdon é material neste caso: tmux exige que o termo seja definido como screen (ou uma variante) e xterm é, por padrão, um termo de 8 cores. É por isso que o OP está vendo a diferença.
precisa saber é o seguinte
Coloque xterm*termName: xterm-256colorna sua ~/.Xresourcese ver se isso faz a diferença ...
jasonwryan

Respostas:

22

Resposta curta

É um bug.

Resposta completa

Parece que a visualização "correta" é a da esquerda, onde a fonte em negrito não é renderizada. Pelo que pude entender ( aqui está a referência), o atributo bold foi usado, originalmente, para definir a versão destacada das 8 cores base.

Historicamente, houve uma correspondência individual entre as versões em negrito das 8 cores ANSI padrão e as versões brilhantes das 8 cores padrão. No passado, quando um programa em cores exigia a exibição de texto em negrito, provavelmente era mais fácil para os emuladores de terminal exibir uma versão mais brilhante de qualquer cor do texto (e esperar que o usuário interprete isso em negrito) do que exibir um tipo de letra com um peso ousado.

Basicamente, o que está acontecendo aqui é que, para usar a paleta Solarized completa , com laranja , roxo e todos os níveis de cinza , as cores são chamadas com o atributo bold (realce) , que por sua vez se refere às 8 cores alternativas do Paleta ANSI.

O Terminal entende isso corretamente e mostra o laranja e o comentário em cinza na tipografia normal , enquanto o tmux adiciona uma fonte em negrito desnecessária a eles. Em conclusão, o lado esquerdo está correto, enquanto o lado direito não.

Questão 2

Existe uma maneira de desativar a renderização em negrito do tmux ?
Eu ainda tenho que fazer alguma pesquisa sobre isso e atualizarei esta resposta assim que encontrar alguma coisa.

Resposta 2

E aqui temos a solução! :)

Para que o tmux se comporte corretamente, precisamos chamá-lo dizendo a ele que estamos em um ambiente habilitado para 256 cores.

TERM=xterm-256color /usr/bin/tmux

Por conveniência, poderíamos fazer aliasisso (ou seja, você adiciona alias tmux="<the line above>"ao seu ~/.bashrc).

O tmux interpreta corretamente as cores "negrito-alternativa" não negrito

Chamar tmuxcomo tmux -2, para forçar o tmux a ser executado com suporte a 256 cores (em vez de redefinir a TERMvariável ambiental) não permitirá a interpretação correta das 8 cores "alternativas em negrito" (ou seja, a variante mais brilhante também resultará em uma composição de texto em negrito). Portanto, eu recomendo usar a solução aqui acima por ter a interpretação correta de 256 cores e cores "negrito-alternativas" não-negritas.

Atcold
fonte
muito amor cara !!
shxfee