tmux no colorea el indicador de PS1

11

Recientemente decidí cambiar mi variable PS1 para acomodar algunos bonitos colores solarizados para mi placer de visualización terminal. Cuando no está en una sesión tmux, ¡todo es genial! ¡Arcoíris, ponis, unicornios y un aviso distinguible! ¡Frio!

Sin embargo, el problema está dentro de tmux. Verifiqué que el valor de PS1 es el que espero que sea y el mismo que cuando tmux no se está ejecutando, a saber \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].

Todos mis alias, etc. en mi .bash_profile también funcionan como se esperaba. tmux también muestra colores sin incidentes, ya que se echo -ne "\033[1;33m hi"comporta como se esperaba gls --color.

La línea relevante actual en mi .bash_profile es export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]", aunque originalmente estaba buscando un script ubicado en un archivo .bash_prompt para manejar algunos condicionales, etc. Intenté volver a la versión más simple.

La ejecución bashhará que la solicitud se coloree, pero debe hacerse en cada panel. export PS1=[that long string I've already posted]No lo haré.

Mi .tmux.conf es el siguiente:

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

Porciones relevantes de .bash_profile:

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

Estoy usando macOS Sierra, iTerm 2, he probado tanto la versión homebrew actual de bash como la bash del sistema (actualmente está usando homebrew), tmux 2.4.

También coloqué touch testing_touch_from_bash_profileen mi .bash_profile mientras estaba en una sesión tmux con dos paneles, eliminé un panel, abrí un panel y verifiqué que el archivo se había creado.

echo $TERMvuelve xterm-256color.

Me he asegurado de que al salir de tmux para probar los cambios de configuración, salga de tmux y que actualmente no se esté ejecutando ningún proceso de tmux en el sistema ps -ax | grep tmux.

Curiosamente, la fuente del script .bash_prompt también cambia el color siempre que lo haga dentro de cada panel tmux.

Miré /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w e intenté agregar la bandera --login después de la llamada bash en la primera línea de mi .tmux.conf. Al iniciar tmux con tmux new bash, el primer panel se coloreará, pero los paneles posteriores no.

La variable $ PS1 está siendo honrada por aparentemente todos los aspectos, excepto colorear cualquier campo.

¿Alguien tiene alguna idea?

J. Sagurton
fuente
Pruebe las comillas simples
Kevin el
55
La PS1configuración que publicó no tiene ningún comando para cambiar los colores. Publique una configuración real que funcione fuera de tmux. Además, debe configurar PS1en .bashrc, no en .bash_profile: .bash_profileno puede ser que consiga ejecutada en absoluto, y la configuración puede ser reemplazado más tarde.
Gilles 'SO- deja de ser malvado'

Respuestas:

3

Su PS1 también me da salida en blanco y negro.

Sin embargo, volver a la mía me da color, por lo que deberías poder descubrir las diferentes, yo uso

$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$

git_branch es una función bash que tengo que es:

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

El tuyo contra el mío:

ingrese la descripción de la imagen aquí

Esto funciona igual en OSX y Ubuntu

Michael Durrant
fuente
10

Mi solución a este problema fue establecer

force_color_prompt=yes

en mi .bashrc. Ahora mi indicador tmux tiene color.

Panki
fuente
No estoy seguro de por qué esto se comporta de manera diferente en tmux que fuera de él, pero esto también me sirvió.
Matt Lacey
En este caso, debe especificar esto: lo que tiene que hacer es ejecutar el comando tmuxy luego ejecutar una sesión tmux source ~/.bashrc. Necesitas hacer eso en cada panel.
evaristegd
Gracias, este trabajo para mí también en Ubuntu 18.04 gnome-terminal.
intijk
0

En mi máquina, la solución es agregar

set -g default-terminal "xterm-256color"

a ~/.tmux.conf.

Siyuan Ren
fuente