J'ai besoin de mon $TERM
être xterm-256color
en dehors de tmux (dans un terminal "plain" avec zsh), mais screen-256color
à l'intérieur de tmux.
J'ai d'abord essayé :
- ajoutez
export TERM='xterm-256color'
à mon~/.zshrc
. - ajouter
set -g default-terminal "screen-256color"
à mon~/.tmux.conf
Maintenant, quand j'ouvre le terminal (par exemple, xterm), TERM
est xterm-256color
, qui est correct. Mais quand je lance tmux, TERM
est à nouveau xterm-256color
!
Ensuite, j'ai essayé de commenter la ligne dans mon ~/.zshrc
. Maintenant, quand j'ouvre le terminal, TERM
est xterm
, et quand je lance tmux, TERM
est screen-256color
. Il semble donc que si je définisse TERM
dans le .zshrc
, tmux définit d'abord TERM
à screen-256color
, exécute shell (qui est zsh) et zsh lit .zshrc
et réinitialise TERM
à xterm-256color
.
Alors, comment faire TERM
être xterm-256color
dans un terminal "ordinaire", et screen-256color
dans tmux ?
Réponse acceptée :
La variable d'environnement TERM doit être définie par l'application qui agit comme votre terminal. C'est tout l'intérêt de la chose :permettre aux programmes qui s'exécutent à l'intérieur de savoir quel terminal est utilisé et donc quel type de fonctionnalités il prend en charge.
Zsh n'est pas un terminal. C'est une coquille. Il peut se soucier de la configuration de votre TERM s'il veut faire des choses spéciales, mais il ne devrait pas être responsable de la configuration ce. Au lieu de cela, il est responsable de la définition de variables telles que ZSH_VERSION qui peuvent être utilisées par des scripts ou d'autres processus enfants pour comprendre le comportement à attendre de leur shell parent.
Au lieu de cela, vous devez vérifier la configuration de l'application de terminal que vous utilisez et lui demander de se signaler correctement. Par exemple, vous pouvez le faire pour xterm en ajoutant cette ligne au ~/.Xdefaults
fichier qu'il utilise pour les valeurs de configuration :
xterm*termName: xterm-256color
Il semble que gnome-terminal fasse la chose idiote de lire ce que serait votre configuration xterm au lieu d'avoir la sienne. Cela peut vous aider dans certains cas, mais il devrait être plus correctement défini sur gnome-256color. Cela semble être un reproche de longue date contre lui (et certains autres émulateurs de terminaux basés sur VTE). Un moyen courant de contourner cela consiste à exploiter une autre valeur qu'il définit :
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=gnome-256color
fi
Mais cela vous ramène à votre problème avec tmux, vous devrez donc en tenir compte en ne réinitialisant pas TERM s'il s'agit déjà de quelque chose comme "screen-256color" ou "screen":
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=gnome-256color
fi
Pour les autres terminaux, vous devrez rechercher leurs routines de configuration appropriées.
En relation :Comment faire en sorte que Safari définisse kMDItemWhereFroms lors de l'utilisation de "Enregistrer l'image dans les téléchargements" ?