Necesito $TERMque esté xterm-256colorfuera de tmux (en la terminal "simple" con zsh), pero screen-256colordentro 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 abra terminal (por ejemplo, xterm), TERMes xterm-256color, lo que es correcto. Pero cuando ejecuto tmux, ¡ TERMestá de nuevo xterm-256color!
Luego traté de comentar en mi línea ~/.zshrc. Ahora, cuando abro el terminal, TERMes xterm, y cuando ejecuto tmux, TERMes screen-256color. Por lo que parece si fijo TERMen el .zshrc, en primer lugar, tmux conjuntos TERMa screen-256color, carreras de concha (que es zsh), y zsh lee .zshrcy se restablece TERMa xterm-256color.
Entonces, ¿cómo hacer TERMpara estar xterm-256coloren la terminal "simple" y screen-256coloren tmux?

TERMestos 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 usanxtermes 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.xtermsi 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.Respuestas:
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
~/.Xdefaultsarchivo que usa para los valores de configuración: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:
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":
Para otros terminales, deberá buscar sus rutinas de configuración adecuadas.
fuente
zshNo es responsable de la configuración$SHELL.logines responsable de configurarlo, y usted es responsable de cambiar eso a otra cosa si desea decirle a las aplicaciones (xterm,vi...) qué shell desea como su shell preferido.zshes responsable de la configuración$ZSH_VERSIONy algunas variables de shell especiales documentadas, pero no toca$SHELL.konsoleconfigurar TERM en lugar de ponerlo en mi bashrc. Nos pareció que estaba situado en la ficha General del perfil, Medio ambiente, lo cambió a partirxtermdexterm-256colortruecolorlugar degnome-terminalpara$COLORTERMy, por lo tanto, el mecanismo de detección anterior puede no funcionar. XTERM no parece establecer este valor en absoluto, puede ser válido verificar cualquier valor. este tipo de término se discute parcialmente en este resumen,Dentro de tu .zshrc, pon
Y, dentro de su .tmux.conf
fuente
[[ $TMUX != "" ]] && export TERM="screen-256color"esta manera, zsh establecerá TERM solo si se llama dentro de una sesión tmux