Utiliser 256 couleurs pour tmux

177

J'ai 256 couleurs qui fonctionnent très bien konsole,. Je pensais tmuxessayer, car contrairement à screen, il semble prendre en charge le vimode. Cependant, je constate que les couleurs de mon invite apparaissent et cela est probablement dû au fait que j'ai une invite en mode 256 couleurs. Que dois-je faire tmuxpour reconnaître toutes les 256 couleurs?

xénoterracide
la source
2
tmux -2Je devais le faire en terminator et j'ai été un peu surpris. Le -2drapeau dit à tmux de forcer l'utilisation de 256 couleurs ... que votre terminal le veuille ou non ... dun dun dunnn: P
Dylan

Réponses:

253

La FAQ de Tmux déconseille explicitement de définir TERM sur autre chose que screen ou screen-256color dans votre fichier d'initialisation du shell, alors ne le faites pas!

Voici ce que j'utilise:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

et dans mon fichier .tmux.conf:

set -g default-terminal "screen-256color"

Aliasing tmux" tmux -2" devrait également faire l'affaire.

conserves
la source
4
J'aime bien la manière de la définir dans le meilleur fichier .tmux.conf ... utiliser la coquille pour la définir ne me semble tout simplement pas correcte
xenoterracide
6
Bizarre. Vous n'avez pas besoin tmux -2d'OSX mais vous en avez besoin avec Gnome Terminal. Merci pour l'info, ajouté à mes alias!
FX
1
Dans Kubuntu 13.10, le paramètre .tmux.conf seul ne m'a pas rendu mes 256 couleurs (qui ont été surlignées en mode visuel vim), mais l'alias a fonctionné. Préférerait certainement une solution uniquement en fichier .tmux.conf.
Jacob Dalton
1
ssh'd sur une machine Ubuntu (depuis OS X Terminal), le terminal par défaut .tmux.conf était tout ce dont j'avais besoin.
marqueurs duelin
2
pour moi, il me semble que tout ce que je dois faire est de ne TERM=screen-256color tmuxpas créer de .tmux.conffichier. Est-ce que je manque quelque chose?
joelostblom
39

Essayez de définir explicitement 256 couleurs dans votre base ou zshrc:

export TERM=xterm-256color

ou

export TERM=screen-256color

Si vous ne parvenez pas à effacer correctement les couleurs d’arrière-plan lorsque vous utilisez le paramètre de terme d’écran, vous pouvez essayer:

export TERM=screen-256color-bce
expurgé
la source
1
le premier est mon paramètre TERM par défaut ... Je viens d'essayer les 2 autres et mon invite ne montre toujours pas de couleurs une fois que j'ai entré tmux. (Je voudrais noter que tmux montre les couleurs en bas) ... ... il semble que lorsque j'entre dans tmux, il réinitialise TERM à TERM = screen ... il y a peut-être un moyen de changer cela dans une config?
xenoterracide
nvm ... je suppose que le placer dans un rc de mon shell fonctionne ... combien il est agaçant de ne pas tenir compte de la variable d'environnement TERM définie lorsque j'exécute tmux ... Je suppose que je devrais mettre un conditionnel dans mon rc.
xenoterracide
1
-bce n'est pas compatible avec tmux. Tmux ne prend pas en charge l’effacement des couleurs de fond:
Dustin Kirkland le
1
J'ai eu ce problème avec Roxterm. J'espère que l'ajout de roxterm à ceci aidera les gens à trouver la même solution que moi. Je me retrouverais dans vim et la sélection des lignes les ferait disparaître. Extrêmement difficile à rechercher. Par défaut, roxterm est configuré avec $ TERM = xterm, ce qui n’est pas bon.
BeepDog
5
-1, vous ne devez pas définir inconditionnellement dans votre fichier d'initialisation du shell. Le paramétrer pour xterm-256colorle remplacer dans tmux également, et le screen-256colorplacer en dehors de tmux pourrait conduire à l'affichage de bugs.
Nyuszika7h
19

Selon la FAQ tmux , ajoutez ceci à votre ~/.tmux.conf:

set -g default-terminal "screen-256color"

Ajoutez ensuite cet alias pour tmux:

alias tmux='tmux -2'

Pas besoin de remplacer la TERMvariable dans votre profil ou lors du démarrage tmux.

Plus d'informations: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim

utilisateur1338062
la source
2
Configurer tmux me suffisait; Je n'avais pas besoin de définir un alias (même si ça ne ferait probablement pas de mal).
Anishpatel
Configurer tmux seul fonctionne pour moi. Le pseudonyme n'était pas suffisant.
Harry Moreno
12

La dernière version de ncurses est livrée avec une entrée terminfo tmux-256color (la FAQ le mentionne). Par exemple, l'utilisation de tmux-256color par rapport à screen-256color présente l' avantage de rendre correctement le rendu de l'italique (l'écran ne prend pas en charge l'italique).

Donc, si vous avez le dernier paquet ncurses, ce qui suit fonctionnera également:

set -g default-terminal "tmux-256color"
Gabriel Parent
la source
Je tiens à noter que cette solution semble nécessiter tmux 2.6ou mieux
zzxyz
3

Notez vraiment important ici si vous utilisez une Ubuntu plus ancienne que Bionic (18.04). Si vous courez tmux 2.1ou si vous êtes plus âgé et que vous l'êtes probablement, en principe, aucun conseil que vous lisez en ligne à propos de tmux ne fonctionnera .. pour rien.

tmux -Vest un test facile pour cela. Si vous en voyez 2.1une version plus récente ou plus ancienne, vous pouvez créer tmux à partir des sources ou ajouter un référentiel non officiel. J'ai mis à jour mon tux avec:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Personnellement, après la mise à niveau vers 2.6, 1) mes clés fonctionnent mieux, 2) les conseils en ligne fonctionnent, 3) mes couleurs ne sont pas folles. Grande amélioration.

(Voici un lien vers la page du référentiel, btw): https://launchpad.net/~hnakamur

zzxyz
la source
2

Je ne pouvais pas expliquer pourquoi cela fonctionne mais cela a résolu le problème pour moi.

~ / .tmux.conf

set-option -g default-command bash
John Snow
la source
1
J'ai essayé cela en dernier recours et, étonnamment, cela a fonctionné!
v0d1ch
1

C’est ma solution .... Je modifie mon fichier .bashrc et l’ajoute

if [ "$TERM" != "xterm-256color" ]; then
      export TERM=xterm-256color
    fi

Espérons que cela fonctionne dans le vôtre

Wira Bhakti
la source
10
Pourquoi s'embêter avec le if? Vous pouvez simplement définir la variable.
joeytwiddle