perder vim colorscheme en modo tmux

228

Estoy ejecutando iterm2 y cuando estoy en modo tmux, el esquema de colores que configuré en vim no aparece. Solo el esquema de color que he establecido en iterm. Si ejecuto vim desde shell, el esquema de colores parece correcto, solo cuando estoy en modo tmux.

Intenté configurarlo :colorscheme molokaien vim (vea la captura de pantalla a continuación) y no cambia; nuevamente, el esquema de colores predeterminado para iterm2 permanece.

¿Me falta alguna configuración para iterm o tmux.conf? Mis dotfles están en github aquí.

tristen
fuente
31
¿Qué pasa cuando lo haces $ tmux -2?
romainl
44
Eso fue todo. ¿Qué es la bandera -2?
Tristen
11
Obliga a tmux a trabajar con 256 colores.
romainl

Respuestas:

252

Yo tuve el mismo problema. La única diferencia fue que estoy usando en solarizelugar de eso molokai.

Para solucionar el problema, he configurado un alias en ~/.bashrc:

alias tmux="TERM=screen-256color-bce tmux"

Y configure la default-terminalopción en ~/.tmux.conf:

set -g default-terminal "xterm"

Por último, haz $ source ~/.bashrcpara cargar un nuevo alias.

Seyeong Jeong
fuente
20
Yo uso esto en lugar de tmux -2ya que esto es más detallado.
thameera
97
Personalmente, tuve que usar set -g default-terminal "screen-256color"para trabajar en lugar de xtermen OS X, metido en una caja de Ubuntu. Me referí a este sitio: rhnh.net/2011/08/20/vim-and-tmux-on-osx
waffl
77
El alias aquí no tiene sentido: finge a tmux que se está ejecutando dentro de la pantalla o tmux, lo cual casi nunca es el caso. Para decirle a tmux que asuma que el terminal en el que se ejecuta admite 256 colores, ejecute tmux -2o tmux -2 attach(tmux decide cada vez que conecta una sesión nueva o existente a un terminal). Un alias sensato sería alias tmux='tmux -2'. Ver también tmux, TERM y soporte de 256 colores
Gilles 'SO- deja de ser malvado'
3
Leí en alguna otra respuesta (no pude encontrar la referencia) que no era una buena práctica forzar el TÉRMINO, aunque no estoy seguro. Dado que la tmux -2opción con el set -g default-terminal "screen-256color"funcionó para mí, esa será mi elección. ¡Pero gracias de todos modos!
marcelocra
55
Si la .tmux.confconfiguración no parece tener efecto, cierre todos los procesos tmux y reinicie. Puede hacerlo set -g default-terminal "screen-256color"sin establecer ningún alias .bashrc. Creo que las personas están haciendo soluciones alternativas como el alias de la variable de entorno porque no están cerrando todos los procesos tmux después de la configuración .tmux.conf.
Chev
74

Como @romainl menciona anteriormente, necesitaba forzar a tmux a usar 256 colores agregando la -2bandera:

$ tmux -2

He añadido alias tmux='tmux -2'a mi bash_profile, así, no me olvido :)

tristen
fuente
En realidad, no es obligatorio en absoluto: no lo uso, -2pero tengo 256 colores trabajando en Vim en tmux.
romainl
@romainl Es necesario si tmux no detecta que su terminal tiene 256 colores, lo cual es bastante común.
Gilles 'SO- deja de ser malvado'
1
@Gilles, Vim no detecta que el terminal admite 256 colores porque el valor predeterminado de tmux TERMes screen. -2no cambia TERMy no cambia nada relacionado con el color con la información que Vim obtiene de su entorno: :echo &t_Coaún regresa 8. Con la información que se proporciona, Vim hace lo correcto. Las únicas cosas que se deben establecer son: 1. de su emulador de terminal TERMa xterm-256colorun valor equivalente o igual que urxvt-unicode-256colory por defecto de 2. tmux TERMcon set -g default-terminal "screen-256color".
romainl
@romainl La mayoría de los entornos tienen TERM configurado como xtermno xterm-256color, de ahí la necesidad de ejecutarse tmux -2( TERM=xterm-256color tmuxo cambiar la tapa de término u otras formas de lograr lo mismo).
Gilles 'SO- deja de ser malvado'
1
@Gilles, el problema es que -2 no logra nada que tenga ningún impacto en el comportamiento de Vim con respecto a la compatibilidad con 256 colores porque lo único que le importa a Vim es su TERM y que se configurará en su extremo de la cadena: en su emulador de terminal Si utiliza SSH a través de 5 hosts y su terminal está configurada correctamente, Vim lanzado en el 5 ° host verá su TERM de 256 colores y actuará en consecuencia. Si usa tmux en cualquier punto de la cadena -2 tendrá un impacto cero en el comportamiento de Vim porque todo lo que ve es que su entorno está limitado a 8 colores debido al TERM predeterminado de tmux: pantalla, -2 o no.
romainl
72

Probé todas las soluciones anteriores y lo que finalmente funcionó para mí es poner las siguientes líneas .tmux.conf:

set -g default-terminal "xterm-256color"
Electo
fuente
Estoy usando tmux a través de SSH y esto también es lo que funcionó para mí, aunque no estoy usando xterm, solo SSH normal.
armen.shimoon
No lo estaba usando sobre ssh y esta fue la única respuesta que funcionó para mí. Sesión iTerm local en OSX 10.9.5.
Chev
Esto funciona para mí (MacOS Mojave + iTerm2 / Alacritty), gracias
Adrian Magdas
31

Acabo de descubrir por qué estaba teniendo tanta confusión. Yo, como otros aquí, estaba teniendo dificultades para que la configuración del terminal predeterminado surta efecto. Recordé que tenía una sesión tmux en segundo plano. Volví a adjuntar mi sesión, cerré mis procesos y cerré TODOS los procesos de tmux. La próxima vez que reinicié tmux, la configuración predeterminada del terminal .tmux.confcomenzó a surtir efecto. No sé si otros también lo están haciendo, pero recomiendo cerrar todos los procesos tmux antes de modificar el .tmux.confarchivo.

Tengo mi disposición a trabajar en mi máquina local (OSX 10.9.5 con iTerm2) sin ninguna modificación a .bashrco .bash_profile. Todo lo que hice fue poner la línea set -g default-terminal "xterm-256color"a ~/.tmux.confy reiniciar todos los procesos TMux.

Obtuve mi configuración remota (ssh a Ubuntu 14.04) para que funcione exactamente de la misma manera sin modificaciones .bashrc. Simplemente agregué set -g default-terminal "xterm-256color"a ~/.tmux.confmi máquina remota y reinicié todos los procesos remotos de tmux.

Puede probar lo que Vim está viendo haciendo echo $TERMdesde una sesión tmux. Siguió diciendo screencomo el valor hasta que reinicié todos los procesos tmux, momento en el que reflejóxterm-256color como se esperaba.

Espero que ayude.

Chev
fuente
1
He confirmado en varios sistemas operativos más desde esta publicación, cerrar todos los procesos y configurar la default-terminalopción .tmux.confha funcionado el 100% del tiempo hasta ahora.
Chev
2
¡yo también! Hubiera gastado menos tiempo en esto si esta respuesta estuviera más arriba.
Sigfried
21

Esto es un poco obsoleto, pero vale la pena mencionar que el uso de la pantalla a menudo rompe las teclas Inicio y Fin. Utilizando

export TERM="xterm-256color"

debe mantener la funcionalidad de estos y permitir que el esquema de color (o línea de alimentación) funcione bien.

Jpatrick
fuente
Gracias por señalar esto. No lo sabia. Todavía parece funcionar para Debian derv por lo que he visto hasta ahora. En mi defensa, la publicación hacía referencia a OSX.
Jpatrick
tmux 1.9a, OSX 10.9.2, iTerm2 Build 1.0.0.20130622 export TERM = "xterm-256color" en .bash_profile, luego configúrelo en xterm-256-color funcionó para mí. No es necesario establecer ninguna configuración de tmux.
agenteo
14

Necesitaba vim para mostrar correctamente con tmux en la terminal en ubuntu y cygwin / mintty en windows. Lo hice funcionar combinando las respuestas como esta.

En .bashrc:

alias tmux="tmux -2"

En .vimrc:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

basado en las respuestas de esta pregunta, esta página wiki de Vim y esta pregunta de cursor de bloque

Andrew Johnston
fuente
Tuve el problema con mintty, y agregar la configuración de vim me lo solucionó. Ni siquiera necesitaba hacer el tmuxalias.
trigoman
@trigoman, lo mismo para mí, solo tuve que actualizar el .vimrc.
Masood Alam
Intenté todas las sugerencias anteriores. Acabo de agregar set t_Co=256a .vimrc y se corrigió. No necesitaba crear un tmuxalias.
Mike
11

He intentado todas las instrucciones anteriores y descubrí que lo más importante es que tengo que agregar explícitamente la siguiente línea en mi archivo .bashrc.

export TERM=screen-256color

No sé por qué alias tmux = "TERM = screen-256color-bce tmux" no funciona. Yo uso Sierra 10.12.1.

Lion Lai
fuente
Esto es lo que funcionó para mí. Simplemente exportación simple de TERM. +1
markovchain
10

En caso de que alguien necesite soporte de color de 24 bits:

Tmux admite color de 24 bits a partir de la versión 2.2. Si su terminal admite color de 24 bits, agregue su terminal a la configuración de anulación de terminal. Por ejemplo,

set -ga terminal-overrides ",xterm-256color:Tc"

Lista de verificación de mi entorno:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (el tipo de terminal de informe es xterm-256color )
  • neovim 0.1.7 (Habilite el color de 24 bits agregando: xterm-256colora.vimrc )
  • tmux 2.3 (Agregar set -ga terminal-overrides ",xterm-256color:Tc"a .tmux.conf)

Nada más necesito agregar .bashrco .zshrc.

Espero que esto pueda ayudar.

Yanzhe Chen
fuente
Lo único que funcionó para mí. ¿Qué hace esto exactamente?
volk
6

Dado que este es el primer resultado en Google y ninguno de los anteriores ayudó ... quería publicar esto para que alguien pueda encontrarlo útil

en .vimrc:

set background=dark
set t_Co=256

HTH

HK_
fuente
He probado estas dos líneas y funcionan bien para mi Vim en WSL-Windows10.
llinfeng
1
Muchas gracias. Esto funcionó en Ubuntu 18 con gnome-terminal
Roymunson
4

Agregar la siguiente línea en .tmux.conf funcionó para mí con macOS Sierra 10.12.6,

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

Zack Zhu
fuente
Igual que aquí. ¡Gracias @waffl por encontrar esta solución!
Adam Erickson
3

Si te encuentras en la misma situación que yo, que nada de lo anterior funcionó ... prueba esto:

en .tmux.conf:

set -g default-terminal "xterm"

en bash config (quizás .bashrco .bash_profile):

alias tmux="tmux -2"

y luego ejecuta:

killall tmux

y luego relanzar tmux

eliasbagley
fuente
3

Si usa tmuxinatoro mux, deberá agregarlos en .bashrco .zshrc:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

Estas fuerzas para usar 256 colores en la terminal.

Entonces tmux, tmuxinatory el muxcomando funcionará.

qingxp9
fuente
2

Para configurar el color correcto y deshacerse del problema de renderizado en Ubuntu y Mac:

Mira esto

Munish
fuente
2

Solo tuve que lidiar con este problema, y ​​aunque todas las respuestas publicadas anteriormente fueron útiles, no resolvieron el problema en mi caso.

Mi problema se solucionó eliminando la siguiente línea en mi .vimrc:

set termguicolors

que era redondo con otra instrucción de todos modos.

Ahora, con la siguiente línea encontrada en respuestas anteriores en mi .tmux.conf:

export TERM="screen-256color"

Todo es bonito y colorido.

Nitlev
fuente
2

He eliminado la línea set termguicolors, pero no funciona. Poner set notermguicolorsen cambio en las .vimrcobras.

alextanhongpin
fuente
1

Desde la página de manual de tmux, agregue la bandera de la siguiente manera:

tmux -2

Esta -2bandera obliga a tmux a ejecutarse en modo de 256 colores.

Esto funciona para mi

RyanLiu
fuente
1

No tuve mucha suerte tratando de exportar un TERMterminal predeterminado diferente o configurado en mi.tmux.conf .

Mi solución para arreglar los colores vim dentro de tmux fue agregar esta línea a .tmux.conf:

set -g terminal-overrides 'xterm:colors=88'

No estoy seguro de por qué se necesitaba esta anulación dado que yo TERM=xtermy yo también tenemos iTerm configurado en xterm, pero parece funcionar.

Patrick Lewis
fuente
0

Estoy usando Ubuntu bionic 18.04.4 LTS y tmux 2.6. Tengo el mismo problema y se puede resolver simplemente agregando esto a .bashrc

export TERM=screen-256color

Y, por supuesto, no olvides buscarlo. source ~/.bashrc

O simplemente reinicie su terminal

babang-parhusip
fuente