Obteniendo 256 colores para trabajar en tmux

177

Tengo 256 colores funcionando bien konsole,. Pensé en tmuxprobarlo porque, a diferencia de la pantalla, parece admitir el vimodo. Sin embargo, encuentro que aparecen los colores de mi indicador y esto es muy probable porque tengo un indicador de modo de 256 colores. ¿Qué necesito hacer tmuxpara reconocer los 256 colores?

xenoterracida
fuente
2
tmux -2Tuve que hacer esto en Terminator y me sorprendió un poco. La -2bandera le dice a tmux que fuerce el uso de 256 colores ... le guste o no a su terminal ... dun dun dunnn: P
Dylan

Respuestas:

253

Las preguntas frecuentes de Tmux desaconsejan explícitamente que no se configure TERM a otra cosa que no sea screen o screen-256color en su archivo de inicio de shell, ¡así que no lo haga!

Esto es lo que uso:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

y en mi .tmux.conf:

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

Aliasing tmuxa " tmux -2" también debería hacer el truco.

primates enlatados
fuente
44
Me gusta la forma de configurarlo en .tmux.conf mejor ... usar el shell para configurarlo simplemente no parece correcto
xenoterracide
66
Extraño. No necesita tmux -2en OSX pero lo necesita con Gnome Terminal. Gracias por la información, agregada a mis alias!
FX
1
En Kubuntu 13.10, la configuración .tmux.conf por sí sola no me devolvió mis 256 colores (que eliminó el resaltado en modo visual vim), pero el alias funcionó. Ciertamente preferiría una solución de solo archivo .tmux.conf.
Jacob Dalton
1
ssh'd en una máquina Ubuntu (desde la Terminal OS X), la terminal predeterminada .tmux.conf era todo lo que necesitaba.
marcadores de duelin
2
para mí parece que todo lo que necesito hacer es TERM=screen-256color tmuxsin crear un .tmux.confarchivo. ¿Me estoy perdiendo de algo?
joelostblom
39

Intente configurar 256 colores explícitamente en su bashrc o zshrc:

export TERM=xterm-256color

o

export TERM=screen-256color

Si tiene problemas con tmux que no borra los colores de fondo correctamente cuando usa la configuración de término de pantalla, puede intentar:

export TERM=screen-256color-bce
redactado
fuente
1
el primero es mi configuración predeterminada de TERM ... Acabo de probar los otros 2 y mi mensaje aún no muestra colores una vez que ingreso tmux. (Me gustaría señalar que tmux muestra colores en la parte inferior) ... parece que cuando ingreso tmux restablece la pantalla TERM a TERM = ... ¿quizás haya una forma de anular esto en una configuración?
xenoterracide
nvm ... Supongo que ponerlo en un rc de mi shell funciona ... qué molesto es que ignore la variable TERM env que se establece cuando ejecuto tmux ... Supongo que tendré que poner un condicional en mi rc.
xenoterracide
1
-bce no es compatible con tmux. Tmux no admite el borrado del color de fondo:
Dustin Kirkland
1
Tuve este problema con roxterm. Con suerte, agregar roxterm a esto ayudará a las personas a encontrar la misma solución que tenía. Terminaría en vim y seleccionar líneas las haría desaparecer. Extremadamente difícil de buscar. roxterm por defecto se configura con solo $ TERM = xterm, lo cual no es bueno.
BeepDog
55
-1, no debes configurarlo incondicionalmente en tu archivo de inicialización de shell. Establecerlo en xterm-256colorlo anulará también dentro de tmux, y establecerlo screen-256colorfuera de tmux podría provocar errores de visualización.
nyuszika7h
19

Según las preguntas frecuentes de tmux , agregue esto a su ~/.tmux.conf:

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

Luego agregue este alias para tmux:

alias tmux='tmux -2'

No es necesario anular la TERMvariable en su perfil o al comenzar tmux.

Más información: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim

usuario1338062
fuente
2
Configurar tmux fue suficiente para mí; No necesitaba establecer un alias (aunque probablemente no me haría daño).
anishpatel
Configurar tmux solo funciona para mí. El alias no fue suficiente.
Harry Moreno
12

La versión más nueva de ncurses se entrega con una entrada terminfo tmux-256color (las preguntas frecuentes lo mencionan). Como ejemplo, una ventaja de usar tmux-256color sobre screen-256color es que la cursiva se representa correctamente (la pantalla no admite cursiva).

Entonces, si tiene el último paquete ncurses, lo siguiente también funcionará:

set -g default-terminal "tmux-256color"
Gabriel Parent
fuente
Me gustaría señalar que esta solución parece requerir tmux 2.6o mejor
zzxyz
3

Nota realmente importante aquí si está ejecutando un Ubuntu anterior a Bionic (18.04). Si está ejecutando tmux 2.1o es mayor, y probablemente lo sea, básicamente ningún consejo que lea en línea sobre tmux funcionará ... para nada.

tmux -VEs una prueba fácil para esto. Si ve 2.1o tiene una versión anterior, puede compilar tmux desde la fuente o puede agregar un repositorio no oficial. Actualicé mi tmux con:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Personalmente, después de actualizar a 2.6, 1) mis teclas funcionan mejor, 2) el consejo en línea realmente funciona, 3) mis colores no son una locura. Gran mejora

(Aquí hay un enlace a la página del repositorio, por cierto): https://launchpad.net/~hnakamur

zzxyz
fuente
2

No podía explicar por qué esto funciona, pero me resolvió el problema.

~ / .tmux.conf

set-option -g default-command bash
John Snow
fuente
1
¡Intenté esto como último recurso y sorprendentemente funcionó!
v0d1ch
1

Esta es mi solución ... Edito mi archivo .bashrc y agrego esto

if [ "$TERM" != "xterm-256color" ]; then
      export TERM=xterm-256color
    fi

Ojalá funcione en el tuyo

Wira Bhakti
fuente
10
¿Por qué molestarse con el if? Podrías simplemente establecer la variable.
joeytwiddle