Necesito mi $TERM
ser xterm-256color
fuera de tmux (en terminal "simple" con zsh), pero screen-256color
dentro de tmux.
Primero probé:
- añadir
export TERM='xterm-256color'
a mi~/.zshrc
. - añadir
set -g default-terminal "screen-256color"
a mi~/.tmux.conf
Ahora, cuando abro la terminal (por ejemplo, xterm), TERM
es xterm-256color
, cual es correcta. Pero cuando ejecuto tmux, TERM
es de nuevo xterm-256color
!
Luego traté de comentar la línea en mi ~/.zshrc
. Ahora, cuando abro la terminal, TERM
es xterm
, y cuando ejecuto tmux, TERM
es screen-256color
. Así parece si configuro TERM
en el .zshrc
, tmux primero establece TERM
a screen-256color
, ejecuta shell (que es zsh) y zsh lee .zshrc
y restablece TERM
a xterm-256color
.
Entonces, cómo hacer TERM
ser xterm-256color
en terminal "simple" y screen-256color
en tmux?
Respuesta aceptada:
La variable de entorno TERM debe establecerla la aplicación que actúa como su terminal. Este es el punto central de la cosa: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 la configuración de su TÉRMINO si quiere hacer cosas especiales, pero no debería ser responsable de la configuración eso. En su lugar, es responsable de establecer variables como ZSH_VERSION que pueden ser utilizadas por secuencias de comandos 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, puede hacer esto para xterm agregando esta línea a ~/.Xdefaults
archivo que utiliza 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 ayudarlo en algunos casos, pero debería configurarse más correctamente en gnome-256color. Esto parece ser una queja de larga data contra él (y algunos otros emuladores de terminal basados en VTE). Una forma común de solucionar esto es explotar otro valor que establece:
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=gnome-256color
fi
Pero esto lo lleva de vuelta a su problema con tmux, por lo que tendría que tener en cuenta eso al no restablecer TERM si ya es algo como "screen-256color" o "screen":
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=gnome-256color
fi
Para otros terminales, deberá buscar sus rutinas de configuración adecuadas.
Relacionado:¿Cómo hacer que Safari establezca kMDItemWhereFroms al usar "Guardar imagen en descargas"?