vim terminal tmux xterm

Vim: Diferencia entre t_Co=256 y term=xterm-256color en combinación con TMUX



terminal (2)

Cuando no utiliza tmux o screen , solo necesita configurar sus emuladores de terminal para anunciarse como "capaces de mostrar 256 colores" estableciendo su TERM a xterm-256color o cualquier valor comparable que funcione con sus terminales y plataformas. Cómo lo hará dependerá del emulador de la terminal y está fuera del alcance de su pregunta y esta respuesta.

No necesita hacer nada en Vim ya que es perfectamente capaz de hacer lo correcto por sí mismo.

Cuando usas tmux o screen , esos programas establecen su propio valor predeterminado para $TERM , generalmente screen , y Vim hace lo que tiene que ver con la información que se le proporciona.

Si desea un comportamiento más uniforme (y colorido), debe configurarlos para usar un valor "mejor" para $TERM :

  • tmux

    Agregue esta línea a ~/.tmux.conf :

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

  • pantalla

    Agregue esta línea a ~/.screenrc :

    term "screen-256color"

Ahora, ambos multiplexores le dirán a Vim que son compatibles con 256 colores y Vim hará lo que usted espera que haga.

editar

Mi respuesta asume que puede editar esos archivos de configuración pero, como puede editar su ~/.vimrc , no creo que esté tan lejos de la realidad.

editar 2

El valor de la opción de term (recuperado con &term ) es el nombre del terminal recogido por Vim al inicio. Ese nombre es lo que se supone que debes configurar en tu emulador de terminal.

El valor de la opción t_Co ( &t_Co ) es lo que Vim considera que es la cantidad máxima de colores que puede mostrar el terminal host. Se define según la entrada correspondiente a $TERM en terminfo :

term | t_Co -----------------+------ xterm | 8 xterm-256color | 256 screen | 8 screen-256color | 256

Cuando Vim se inicia, obtiene el valor de la variable de entorno TERM , consulta la terminfo datos terminfo con ese valor y almacena una cantidad de información en su entorno en varias variables t_… entre las cuales ... la cantidad de colores disponibles en t_Co . Dado un tipo de terminal "legal" (uno que Vim puede buscar), Vim siempre asume la cantidad correcta de colores.

Establecer t_Co en 256 mientras se deja el term en su valor definido por Vim o, más generalmente, establecer t_Co y / o term en valores que no coinciden con el terminal anfitrión, no tiene sentido y es probable que cree problemas cuando Vim envía una señal eso no es entendido por el terminal o viceversa.

Si bien es completamente posible hacerlo, jugar con t_Co y el term en Vim es totalmente inútil y posiblemente dañino.

Nuevamente, simplemente configure sus emuladores de terminal y multiplexores de terminal correctamente. Eso es todo lo que necesitas

Si termina en un multiplexor de terminal o un emulador de terminal donde no puede definir un TERM correcto, entonces y solo entonces puede forzar a Vim a asumir 256 colores. Con ese fin, cambiar el valor de t_Co es lo único que tiene sentido:

if &term == "screen" set t_Co=256 endif

Entonces ... si puede configurar cada parte individual:

  • emulador de terminal: xterm-256color
  • tmux / screen: screen-256color
  • vim: nada

y has terminado.

Si no puede controlar cada parte, use un condicional simple en su ~/.vimrc para establecer t_Co acuerdo con &term pero no cambie el valor del term .

Pero si puede editar un ~/.vimrc no hay ninguna razón por la que no pueda editar un ~/.screenrc o ~/.tmux.conf o ~/.bashrc o lo que sea.

Estoy probando los diferentes terminales que tiendo a usar para SSH en los cuadros de Linux en los que tengo configurado Tmux.

Básicamente noté este comportamiento, y espero que alguien pueda ofrecer una explicación de lo que está pasando. Ahora puede ser el caso de que este sea un comportamiento específico que afecta a la aplicación Prompt.

Estoy usando Vim en Tmux, y en la aplicación Panic''s Prompt en mi iPhone5 estaba teniendo el comportamiento de que 256 colores no estaban habilitados cuando el .vimrc establece los colores usando la set t_Co=256 . Aquí, Vim estaba mostrando correctamente los colores cuando no se ejecutó a través de Tmux. Además, el Terminal.app de OS X procesó correctamente los colores (desafortunadamente, no probé PuTTY con esto en Windows) con Vim en Tmux.

Luego set t_Co=256 para set term=xterm-256color y ahora los colores funcionan cuando se usa Vim a través de Tmux.

Tenga en cuenta también que probé la set -g default-terminal "xterm-256color" y set -g default-terminal "screen-256color" para Tmux y este cambio no tuvo efecto en el comportamiento.


Puede usar tanto set t_Co=256 como set term=xterm-256color juntos.

term le dice a Vim qué tipo de terminal usar, que controla la visualización / representación de todos los aspectos de Vim, incluyendo cómo mapear entrada clave, redibujar la pantalla, mover el cursor, mostrar colores, etc. Normalmente, Vim puede resolver esto en su propio a través de la variable de entorno TERM proporcionada por su sistema operativo.

A menudo es útil establecerlo explícitamente en caso de que el valor del sistema operativo sea incorrecto. Esto es especialmente cierto si se está conectando a través de una red desde un emulador de terminal que no proporciona el valor correcto.

t_Co es una de las muchas opciones de terminal (utilizada por el sistema termcap que Vim usa para el control de terminales). Se refiere específicamente a la cantidad de colores que admite la terminal. A veces es necesario anular esto si la emulación del terminal es en su mayoría correcta, pero Vim no identifica correctamente la cantidad de colores admitidos.

Uso ambas opciones en mi .vimrc para asegurarme de que Vim use 256 colores en tmux usando todos los terminales que me gustan (el gnome-terminal de Ubuntu, el iTerm2 de OSX y el KiTTY de Windows). También tengo la mayoría de esos terminales explícitamente configurados para enviar xterm-256color como su tipo de terminal.