tmux, Vim et Solarized

19

Locaux

En parcourant tmux , Vim et Solarized, je peux trouver beaucoup de plaintes concernant 256 couleurs et "expérience utilisateur". Eh bien, j'ai le "problème" opposé, c'est-à-dire que Vim fonctionne bien avec un thème Solarized complet uniquement dans tmux .

Contexte

J'ai peaufiné et réglé un peu maintenant avec le schéma de couleurs de mon terminal Ubuntu et de Guake et j'ai presque atteint la perfection qui est atteinte lorsque j'utilise tmux , ce qui signifie à son tour toujours. J'essaie maintenant de comprendre pourquoi cela se produit.

Ci-dessous, il y a deux terminaux, celui de gauche exécute uniquement Vim (affichant le courant .vimrc) tandis que l'autre exécute Vim dans une session tmux . Comme vous pouvez le voir clairement, ce n'est que dans la session tmux que les polices sont en gras, ce qui, je suppose, est correct (ou pas?).

entrez la description de l'image ici

Question

Pourquoi tmux autorise-t-il les polices en gras alors que le terminal, sur lequel tmux est exécuté, ne le permet pas? Est-ce un bug ou une fonctionnalité?

Atcold
la source
Quelle est la sortie d'entrée echo $TERMet de sortie tmux?
jasonwryan
tmux dit screenalors que le terminal dit xterm:)
Atcold
@jasonwryan a lu l'autre question du PO ici et la réponse de Gilles à une question similaire ici . Apparemment, ce $TERMn'est pas pertinent.
terdon
@terdon c'est matériel dans ce cas: tmux requiert que le terme soit défini sur screen (ou une variante) et xterm est, par défaut, un terme de 8 couleurs. C'est pourquoi le PO voit la différence.
jasonwryan
Mettez xterm*termName: xterm-256colorvotre ~/.Xresourceset voyez si cela fait une différence ...
jasonwryan

Réponses:

22

Réponse courte

C'est un bug.

Réponse complète

Il semble que la visualisation "correcte" soit celle de gauche, où les polices en gras ne sont pas rendues. Pour ce que j'ai pu comprendre ( voici la référence), l'attribut bold a été utilisé, à l'origine, pour définir la version en surbrillance des 8 couleurs de base.

Historiquement, il y a eu une correspondance biunivoque entre les versions en gras des 8 couleurs ANSI par défaut et les versions lumineuses des 8 couleurs par défaut. À l'époque, lorsqu'un programme couleur exigeait l'affichage de texte en gras, il était probablement plus facile pour les émulateurs de terminal d'afficher une version plus claire de la couleur du texte (et attendez-vous à ce que l'utilisateur l'interprète comme gras) plutôt que d'afficher un police avec un poids gras.

Fondamentalement, ce qui se passe ici est que, pour utiliser la palette Solarized complète , avec l' orange , le violet et tous les niveaux de gris , les couleurs sont appelées avec l' attribut bold , qui à son tour fait référence aux 8 couleurs alternatives de la Palette ANSI.

Terminal le comprend correctement et affiche l' orange et le gris des commentaires dans la composition normale , tandis que tmux leur ajoute une police en gras inutile . En conclusion, le côté gauche est correct tandis que celui de droite ne l'est pas.

question 2

Existe-t-il un moyen de désactiver le rendu en gras de tmux ?
Je dois encore faire des recherches à ce sujet et je mettrai à jour cette réponse dès que je trouverai quelque chose.

Réponse 2

Et ici, nous avons la solution! :)

Pour que tmux se comporte correctement, nous devons l'appeler en lui disant que nous sommes dans un environnement compatible avec 256 couleurs.

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

Pour plus de commodité, nous pourrions le faire alias(c'est-à-dire que vous ajoutez alias tmux="<the line above>"à votre ~/.bashrc).

tmux interprète correctement les couleurs "bold-alternative" non gras

Appeler tmuxas tmux -2, pour forcer tmux à s'exécuter avec le support de 256 couleurs (au lieu de redéfinir la TERMvariable d'environnement) ne permettra pas une interprétation correcte des 8 couleurs "en gras" (c'est-à-dire que la variante plus lumineuse entraînera également une composition en gras). Par conséquent, je recommande fortement d'utiliser la solution ci-dessus pour avoir à la fois une interprétation correcte de 256 couleurs et des couleurs "bold-alternative" non gras.

Atcold
la source
beaucoup d'amour homme !!
shxfee