
Necesito que $TERM
esté xterm-256color
fuera de tmux (en una terminal "simple" con zsh), pero screen-256color
dentro de tmux.
Primero probé:
- añadir
export TERM='xterm-256color'
a mi~/.zshrc
. - agregar
set -g default-terminal "screen-256color"
a mi~/.tmux.conf
Ahora, cuando abro la terminal (digamos, xterm), TERM
es xterm-256color
, lo cual es correcto. Pero cuando ejecuto tmux, TERM
¡es otra vez xterm-256color
!
Luego intenté comentar nuestra línea en mi ~/.zshrc
. Ahora, cuando abro la terminal, TERM
es xterm
y cuando ejecuto tmux, TERM
es screen-256color
. Entonces, parece que si configuro TERM
en .zshrc
, tmux primero se configura TERM
en screen-256color
, ejecuta Shell (que es zsh) y zsh lee .zshrc
y restablece TERM
en xterm-256color
.
Entonces, ¿cómo hacer TERM
para estar xterm-256color
en una terminal "simple" y screen-256color
en tmux?
Respuesta1
La variable de entorno TERM debe ser configurada por la aplicación que actúa como su terminal. Este es el objetivo del asunto: permitir que los programas que se ejecutan dentro de ellos sepan qué terminal se está utilizando y, por lo tanto, qué tipo de funciones admite.
Zsh no es una terminal. Es una concha. Puede que le importe cuál está configurado su TERM si quiere hacer cosas especiales, pero no debería ser responsable deconfiguraciónél. En su lugar, es responsable de configurar variables como ZSH_VERSION, que pueden ser utilizadas por scripts u otros procesos secundarios para comprender qué comportamiento esperar de su shell principal.
En su lugar, debe verificar la configuración de cualquier aplicación de terminal que esté utilizando y pedirle que se informe correctamente. Por ejemplo, puedes hacer esto para xterm agregando esta línea al ~/.Xdefaults
archivo que usa para los valores de configuración:
xterm*termName: xterm-256color
Parece que gnome-terminal hace la idiotez de leer cuál sería su configuración de xterm en lugar de tener la suya propia. Esto podría ayudarle en algunos casos, pero debería configurarse más correctamente en vte-256color. Esto parece ser una queja de larga data contra él (y contra algunos otros emuladores de terminal basados en VTE). Aforma comúnPara solucionar esto es explotar otro valor que sí establece:
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=vte-256color
fi
Pero esto te lleva nuevamente a tu problema con tmux, por lo que tendrías que tenerlo en cuenta al no restablecer TERM si ya es algo como "pantalla-256color" o "pantalla":
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=vte-256color
fi
Para otros terminales necesitarás buscar sus rutinas de configuración adecuadas.
Respuesta2
Dentro de tu .zshrc, pon
[[ -n $TMUX ]] && export TERM="xterm-256color"
Y, dentro de tu .tmux.conf
set -g default-terminal "screen-256color"