La variable de entorno TERM debe ser establecida por la aplicación que actúa como su terminal. Este es el objetivo principal: dejar que los programas que se ejecutan dentro de ellos sepan qué terminal se está utilizando y, por lo tanto, qué tipo de características admite.
Zsh no es una terminal. Es una concha. Puede que le importe en qué está configurado su TERM si quiere hacer cosas especiales, pero no debería ser responsable de configurarlo . En su lugar, es responsable de establecer variables como ZSH_VERSION que pueden ser utilizadas por los 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, puede 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 lo idiota de leer cuál sería su configuración xterm en lugar de tener la suya propia. Esto puede ayudarlo en algunos casos, pero debería establecerse más adecuadamente en gnome-256color. Esto parece ser una queja de larga data en su contra (y algunos otros emuladores de terminales basados en VTE). Una forma común de hackear esto es explotar otro valor que sí 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 debería tenerlo en cuenta al no restablecer TERM si ya es algo así 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.
TERM
estos terminalesgnome-terminal
, eso probablemente debería sergnome-256color
... Así que son esas aplicaciones las que necesitas configurar correctamente, nozsh
. La razón por la que usanxterm
es probablemente para evitar problemas al enviar ssh a máquinas que no tienen las entradas terminfo más específicas. Si sabe que solo está enviando a máquinas con una base de datos terminfo exhaustiva, entonces puede y debe cambiar eso en las propias aplicaciones.xterm
si xterm-256color s no es compatible, aunque sería aún mejor agregar esas entradas en nuestro propia base de datos ~ / .terminfo)..zshrc
. No es la forma correcta.