Странная управляющая последовательность, отправленная vim на терминал

StackOverflow https://stackoverflow.com//questions/20024211

  •  21-12-2019
  •  | 
  •  

Вопрос

vim, похоже, отправляет несколько странных сообщений (т.е.недокументированные) escape-последовательности для базового терминала при использовании схемы inkpot.Мне не удалось сопоставить их ни с какими кодами VT-100 или ANSI escape;кто-нибудь знает, что это за последовательности?

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

Эти последовательности отображаются как недопустимые токены в эмуляторе терминала, за который я несу ответственность, и я хотел бы добавить поддержку этих последовательностей, если смогу найти для них соответствующую документацию.

В затронутых системах устанавливаются следующие переменные среды, связанные с терминалом:

TERM=xterm
COLORTERM=

Я не пробовал никаких других настроек для этих двух переменных.

vim - это версия 7.2, но я пробовал более новые версии с тем же эффектом.

Спасибо!

Это было полезно?

Решение

Поддерживает ли ваш терминал 88- или 256-цветовой режим?Если это так, то вам, вероятно, следует использовать значение термина типа xterm-88color или xterm-256color вместо простого xterm.

чернильница в частности, запрещается поддержка терминалов, поддерживающих только 8/16 цветов.С вершины чернильница Источник:

" 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.

Код, который настраивает раскраску синтаксиса, предполагает, что если терминал не поддерживает 88 цветов, то он должен поддерживать 256 цветов.Он не пытается предоставить резервные значения для случая 8 цветов (напримеркогда TERM=xterm).Может быть, было бы неплохо, если бы чернильница выдавал сообщение об ошибке (и не изменял настройки цвета), если терминал, по-видимому, не поддерживал соответствующую цветопередачу.


Управляющие последовательности, которые вы видите, являются результатом попытки сгенерировать последовательность управления цветом 8-цветного терминала для номера цвета, который находится за пределами диапазона 0-7 допустимых входных данных для этого типа терминала.Таким образом, эти последовательности, вероятно, недействительны, но они также не являются полностью преднамеренными (возникают из-за чернильница предполагается поддержка 256 цветов, но xterm запись terminfo знает только, как обрабатывать базовую поддержку 8 цветов).

Например, чернильница устанавливает Normal синтаксис: изменить цвет переднего плана на 79 на терминалах 88-го цвета;это значение преобразуется в 231 для терминалов, не содержащих 88 цветов (т.е.для 256-цветных терминалов, но также и для ваших 8-цветных xterm).

Когда вы пытаетесь отформатировать этот номер цвета, выходящий за пределы диапазона, с помощью TERM=xterm, вы получите результат ^[[3231m что вы нашли:

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

(т.е.вставка 231 между ^[[3 и m)

Если вы используете xterm-256color, Таким образом, вы получите более нормальный результат:

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

(т.е.вставка 231 между ^[[38;5; и m)

Аналогичным образом, Normal синтаксис 88-цветной цвет фона, равный 80, преобразуется в 256-цветное значение, равное 232, и выдает ошибку ^[[4232m последовательность для xterm (но это привело бы к более разумному ^[[48;5;232m под xterm-256color).

Другие советы

^[[3231m
.

очень похоже на определение цвета / пошло не так:

^[[32;31m
.

Что бы не иметь большого смысла в любом случае.

Это происходит с определенным значением для $TERM или для любого значения?Какую версию VIM?О каком эмуляторе терминала мы говорим?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top