В чем разница между xterm-color и xterm-256color?
Я сталкивался как с xterm-color
, так и с xterm-256color
, когда пытался настроить мою терминальную программу на использование цвета, то есть вы можете установить переменную окружения TERM
на любую.
Мне было интересно, если кто-нибудь может описать разницу между этими двумя?
Я искал документацию как на своем сервере Ubuntu, так и на своем Mac, но не нашел ни одной. Мне удалось найти различные двоичные файлы только в /usr/share/terminfo
.
Ответы
Ответ 1
xterm-256color
описывает Xterm с поддержкой 256 цветов. xterm-color
описывает более старую ветку Xterm, которая поддерживает восемь цветов. xterm-color
не рекомендуется, поскольку он описывает вариант Xterm, который менее функционален и который вы вряд ли будете использовать. Обычно вы хотите использовать xterm
, xterm-16color
или xterm-256color
.
В частности, xterm-256color
является значением по умолчанию для Терминала, начинающегося с Mac OS X 10.7 Lion, со следующими лучшими рекомендуемыми значениями: xterm-16color
или xterm
(который описывает только поддержку восьми цветов ANSI). До 10.7 по умолчанию использовался xterm-color
, поскольку Терминал не поддерживал некоторые критические функции, описанные рекомендованными значениями Xterm terminfo, например, Фоновое стирание цвета (BCE), современные коды для переключения основного/альтернативного экранов, 256 цветов.
Иногда люди явно устанавливают TERM
на xterm-color
(в отличие от рекомендуемых значений Xterm), чтобы отключить функциональность или обойти несовместимости между доступными значениями terminfo на конкретном компьютере и используемым эмулятором терминала.
Обратите внимание, что технически терминал должен иметь собственные обновленные значения terminfo, которые точно описывают, какие функции он поддерживает, вместо использования значений для Xterm, но:
- Там нет ни одного, который в настоящее время в курсе.
nsterm
представляет предка терминала из NeXTSTEP. Кто-то, по-видимому, недавно обновил nsterm
(иногда в последние пару лет), но я не знаю, попал ли он в дистрибутив ncurses, и он может быть не совсем актуален с Terminal в 10.7.
- Ряд программ и скриптов настройки оболочки явно проверяют, начинается ли
$TERM
с (или равен) xterm
. Поэтому некоторым пользователям все равно нужно знать об использовании рекомендованных значений Xterm с терминалом для совместимости с ними.
Если вы не знакомы с системой terminfo, взгляните на справочную страницу x-man-page://5/terminfo. Также вы можете использовать команду infocmp
, чтобы просмотреть текущие настройки terminfo или сравнить две разные, например, infocmp xterm-color xterm-256color
покажет вам все различия между этими двумя.
Ответ 2
Похоже, что xterm-256color
- это Terminal.app в OS/X. Различия не крошечные - я infocmp'd xterm-color
и xterm-256color
на коробке Ubuntu и немного их нормализовал, и получил довольно много различий. Я мог бы даже сказать, что xterm-256color
больше не xterm.
Обычно, когда вы используете определенный эмулятор терминала, вам нужно "просто знать", какая запись terminfo лучше всего с ним работает. Это подходящая пара, хотя иногда, например, вы можете использовать запись terminfo vt100 на терминале vt220.
С другой стороны, сегодня почти все совместимо с vt100.
Ответ 3
Согласно часто задаваемым вопросам по ncurses, xterm-color давно устарел:
Первоначально, xterm-color соответствовал color_xterm с середины 1990-х годов. Это было заменено XFree86 Xterm в 1996 году.
и база данных терминала дает подробности. Первоначально он был задуман как общее описание терминала, но с самого начала он никогда не был успешным, потому что он не соответствовал XFree86 xterm, в частности, поведению цвета (т.е. функция удаления заднего цвета). Никто не использует nxterm сейчас.
Описание терминала xterm-256color составлено из описания терминала (XFree86) xterm путем изменения поведения цвета (добавление большего количества цветов, но не, функция удаления цвета фона. Используйте infocmp, чтобы увидеть разницу:
$ infocmp xterm-color xterm-256color |wc -l
122
$ infocmp xterm xterm-256color |wc -l
14
$ infocmp xterm xterm-256color
comparing xterm to xterm-256color.
comparing booleans.
ccc: F:T.
comparing numbers.
colors: 8, 256.
pairs: 64, 32767.
comparing strings.
initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
oc: NULL, '\E]104\007'.
rs1: '\Ec', '\Ec\E]104\007'.
setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
Поскольку xterm-color устарел, он в значительной степени игнорировался, пока какой-то (анонимный) разработчик в Apple не решил повторно использовать его для Terminal.app (в 10.5 Leopard), хотя он плохо подходил. Описание nsterm-16color в ncurses было предоставлено кем-то (очевидно, вне Apple), чтобы соответствовать поведению 10.5. Хотя xterm-color использует 8 цветов, nsterm-16color, как можно догадаться, использует 16. Возможно, это способствовало путанице среди пользователей. В любом случае выбор описания терминала для Terminal.app никак не повлиял на Terminal.app, кроме как установить переменную среды TERM
, которую многие приложения используют, чтобы решить, как использовать терминал.
Интересно, что хотя большая часть пользовательского пространства MacOS принадлежит BSD, его конфигурация ncurses - нет. MacOS имеет утилиты tic/infocmp, в отличие от BSD (хотя Apple не обновляла их более десяти лет: ncurses 5.7 был выпущен в 2008 году). В более поздних выпусках MacOS разработчики Terminal.app изменили меню, добавив "xterm-256color", а не "xterm-color". Это не улучшило пользовательский опыт, потому что поведение терминала, использующее соответствующие описания терминала, все еще отличалось. В часто задаваемых вопросах по ncurses упоминается, что:
Кроме того, Mac OS X 10.7, как сообщается, использует xterm-256color в качестве значения $ TERM по умолчанию. Это отличается от xterm-color несколькими способами, в частности, поддержкой bce. Он также отличается от рекомендованного nsterm-256color (infocmp сообщает о 111 различиях).