GNU/Linux >> Tutoriales Linux >  >> Linux

Zsh:Establecer Term=screen-256color en Tmux, pero ¿Xterm-256color sin Tmux?

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"?
Linux
  1. ¿Qué emuladores de terminal admiten el modo de control Tmux?

  2. ¿Vim no se ejecuta dentro de Tmux?

  3. ¿Comando no encontrado en Zsh, pero encontrado en Bash?

  4. Historial de bash sin números de línea

  5. Variable de entorno TERM no establecida

Personalizando mi terminal Linux con tmux y Git

Qué terminal es mejor:Bash vs Zsh

¿Tmux, Término y soporte de 256 colores?

Cómo actualizar un mensaje impreso en la terminal sin volver a imprimir

¿Instalar zsh sin acceso de root?

Establecer el color de la pestaña tmux activa