Pregunta

vim parece enviar varios mensajes extraños (es decir.indocumentado) secuencias de escape al terminal subyacente cuando se utiliza el esquema del tintero.No he podido relacionarlos con ningún código de escape VT-100 o ANSI;¿Alguien sabe cuáles son estas secuencias?

^[[3231m
^[[4232m
^[[3130m

Estas secuencias aparecen como tokens no válidos en un emulador de terminal del que soy responsable y me gustaría agregar soporte para estas secuencias si puedo encontrar la documentación adecuada para ellas.

Las siguientes variables de entorno relacionadas con el terminal están configuradas en los sistemas afectados:

TERM=xterm
COLORTERM=

No he probado ninguna otra configuración para esas dos variables.

vim es la versión 7.2, pero probé versiones más nuevas con el mismo efecto.

¡Gracias!

¿Fue útil?

Solución

¿Su terminal admite el modo de 88 o 256 colores?Si es así, probablemente deberías usar un valor TERM como xterm-88color o xterm-256color en lugar de simple xterm.

tintero rechaza específicamente el soporte para terminales que solo admiten 8/16 colores.Desde lo alto del tintero fuente:

" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.

El código que configura el color de sintaxis supone que si el terminal no admite 88 colores, entonces debe admitir 256 colores.No intenta proporcionar valores alternativos para el caso de 8 colores (p. ej.cuando TERM=xterm).Tal vez sería bueno si tintero emitió un mensaje de error (y no modificó la configuración de color) si el terminal no parecía tener soporte de color adecuado.


Las secuencias de control que está viendo son el resultado de intentar generar una secuencia de control de color de terminal de 8 colores para un número de color que está fuera del rango de 0 a 7 de entradas aceptables para ese tipo de terminal.Entonces, estas secuencias probablemente no sean válidas, pero tampoco son del todo intencionales (que surgen porque tintero asume soporte de 256 colores, pero el xterm La entrada terminfo solo sabe cómo manejar el soporte básico de 8 colores).

Por ejemplo, tintero establece el Normal color de primer plano de sintaxis a 79 en terminales de 88 colores;esto se traduce a 231 para terminales que no son de 88 colores (es decir,para terminales de 256 colores, pero también para sus 8 colores xterm).

Cuando intentas formatear este número de color fuera de rango con TERM=xterm, obtienes el resultado ^[[3231m que encontraste:

% tput -T xterm setaf 231 | od -a
0000000  esc   [   3   2   3   1   m
0000007

(es decir.insertando 231 entre ^[[3 y m)

Si utiliza xterm-256color, obtienes un resultado de apariencia más normal:

% tput -T xterm-256color setaf 231 | od -a
0000000  esc   [   3   8   ;   5   ;   2   3   1   m
0000013

(es decir.insertando 231 entre ^[[38;5; y m)

De manera similar, el Normal sintaxis El color de fondo de 88 colores de 80 se traduce a un valor de 256 colores de 232 y produce el error ^[[4232m secuencia para xterm (pero produciría el más razonable ^[[48;5;232m bajo xterm-256color).

Otros consejos

^[[3231m

se parece mucho a una definición de color hecha/salida mal:

^[[32;31m

lo cual no tendría mucho sentido de todos modos.

¿Sucede con un valor específico para $TERM o por algún valor?¿Qué versión de Vim?¿De qué emulador de terminal estamos hablando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top