Medio ambiente:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Terminal 3.22.1 de GNOME con VTE versión 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (12 de septiembre de 2016, compilado el 22 de febrero de 2017 16:26:11)
- tmux 2.2
Recientemente comencé a usar tmux y he observado que los colores dentro de Vim cambian dependiendo de si estoy corriendo dentro o fuera de tmux. A continuación se muestran capturas de pantalla de Vim fuera (izquierda) y dentro (derecha) de tmux mientras se ve un Git diff:
Mi TERMvariable es
- Fuera de tmux:
xterm-256color - Dentro de tmux:
screen-256color
Vim informa estos tipos de terminales como se esperaba (a través de :set term?):
- Fuera de tmux:
term=xterm-256color - Dentro de tmux:
term=screen-256color
Vim también informa que ambas instancias se ejecutan en modo de 256 colores (vía :set t_Co?):
- Fuera de tmux:
t_Co=256 - Dentro de tmux:
t_Co=256
Hay muchas preguntas similares con respecto a hacer que Vim se ejecute en modo de 256 colores dentro de tmux (la mejor respuesta que encontré está aquí ), pero no creo que ese sea mi problema dada la información anterior.
Puedo duplicar el problema fuera de tmux si ejecuto Vim con el tipo de terminal establecido en screen-256color:
$ TERM=screen-256color vim
Entonces eso me hace creer que simplemente hay alguna diferencia entre las capacidades de terminal xterm-256colory screen-256colorque causa la diferencia de color. Lo que lleva a la pregunta planteada en el título: ¿qué específicamente en las capacidades del terminal hace que los colores Vim sean diferentes? Veo las diferencias entre correr :set termcapdentro y fuera de tmux, pero tengo curiosidad sobre qué variables realmente causan la diferencia en el comportamiento.
Independientemente de la pregunta anterior, ¿ es posible que los colores de Vim sean consistentes cuando se ejecutan dentro o fuera de tmux? Algunas cosas que he probado incluyen:
- Establecer explícitamente el terminal predeterminado que tmux usa en
~/.tmux.confvarios valores (algunos contra el consejo de las preguntas frecuentes de tmux ):
set -g default-terminal "pantalla-256color"
set -g default-terminal "xterm-256color"
set -g default-terminal "screen.xterm-256color"
set -g default-terminal "tmux-256color"
- Iniciando tmux usando
tmux -2.
En todos los casos, Vim continuó mostrando diferentes colores dentro de tmux.
xterm-256colorversión (buscar "38; 5;" en el archivo), pero no puedo en el screen-256color. Por ejemplo, donde hay una \e[38;5;81men xterm-256color(el color # 81 de la paleta de 256 colores, de un tono azul medio), screen-256colorcontiene \e[34men su lugar (el estándar de color azul de la paleta de 8 colores). Entonces, la pregunta principal es por qué vim no usa la paleta de 256 colores en caso de TERM=screen-256color.
xterm-256colorversión parece imprimir la pantalla dos veces, primero con los colores heredados y luego con la paleta de 256 colores. Busque, por ejemplo, "F1" en el archivo, encontrará dos coincidencias en xterm-256color, la primera con \e[34mcolor y la segunda con \e[38;5;81m. No sé lo que está pasando aquí.
set -g default-terminal "screen.xterm-256color"en ~/.tmux.confy volver a cargar la configuración en tmux (<Cs>: fuente-archivo ~ / .tmux.conf) trabajado para mí (tema más destacado). thx


script, iniciarvim, salirvimy luego salirscriptdel shell y adjuntar eltypescriptarchivo resultante ? Luego repita los mismos pasos con en suTERM=screen-256color vimlugar.