Я вижу эти красивые цвета в man-страницах, которые просматриваются с меньшими затратами при установке нескольких этих переменных. Что они имеют в виду, где находится документация? Это интерпретируется less или termcap?
Я вижу эти красивые цвета в man-страницах, которые просматриваются с меньшими затратами при установке нескольких этих переменных. Что они имеют в виду, где находится документация? Это интерпретируется less или termcap?
Ответы:
Termcap - это библиотека, которую Less использует для доступа к терминалу. Termcap в значительной степени устарел, его заменил Terminfo , но Terminfo предлагает интерфейс совместимости Termcap для приложений. Меньше довольствуется интерфейсом Termcap и использует его.
Библиотека Termcap - это описание возможностей терминала. Каждое средство идентифицируется двухбуквенным (или, более обычно, двухбуквенным) кодом. Например, hc
идентифицирует печатные терминалы (то есть принтеры, а не экраны); co
количество столбцов; md
начинает отображать жирный текст. Каждая возможность имеет значение, которое может быть логическим (как с hc
), целым числом (как с co
) или строкой (как с md
). Многие из строк являются escape-последовательностями, которые приложения могут отправлять на терминал для достижения определенного эффекта.
Зачем избегать последовательности? Поскольку интерфейс между терминалом и приложением представляет собой поток символов (точнее, один поток символов в каждом направлении: один для пользовательского ввода, один для вывода для отображения). Когда приложение записывает символ в терминал, он обычно отображается. Несколько символов имеют различное поведение: они являются управляющими символами, которые выполняют такие вещи, как перемещение курсора, переключение атрибутов отображения и т. Д. Команд намного больше, чем управляющих символов, поэтому большинство команд доступны через escape-последовательности, которые начинаются с специальный символ (часто это экранирующий символ, отсюда и название).
Например, когда Less хочет отобразить некоторый жирный текст, он ищет значение md
возможности. Это строка, которую Less записывает в терминал. Терминал распознает эту строку как escape-последовательность и корректирует ее внутреннее состояние так, чтобы последующие символы отображались жирным шрифтом.
В первые дни аппаратных терминалов у разных брендов были разные последовательности выхода и возможности; база данных и интерфейс Termcap были изобретены так, чтобы приложениям не приходилось знать о каждой модели терминала. В настоящее время большинство эмуляторов терминалов имеют очень похожие возможности, но база данных Termcap или Terminfo по-прежнему полезна для устранения незначительных различий.
Эти LESS_TERMCAP_*
переменные могут быть установлены в окружающей среде или в .lesskey
файле . Он предоставляет Меньше с альтернативными значениями для возможностей Терминала. Когда Less хочет использовать возможности терминала, скажем, переключиться на полужирный, он сначала проверяет, есть ли LESS_TERMCAP_md
переменная. Если эта переменная существует, Less использует ее значение в качестве escape-последовательности для переключения на жирный шрифт. Если нет, он использует значение из базы данных Termcap. Этот механизм позволяет пользователю переопределить настройки базы данных Termcap для Less.
Самые полезные LESS_TERMCAP_*
настройки - escape-последовательности. Вы можете сопоставить атрибуты с различными атрибутами. Вы можете использовать tput
команду для поиска значения возможности для текущего терминала в системной базе данных Termcap или Terminfo . Вы можете использовать escape-последовательности напрямую, если не против зависеть от терминала. Например, этот параметр указывает, чтобы Less отображался жирным красным цветом, когда указано отображать жирным шрифтом:
LESS_TERMCAP_md=$(tput md; tput AF 1)
или если ваша tput
команда не поддерживает имена Termcap:
LESS_TERMCAP_md=$(tput bold; tput setaf 1)
Человек отправляет меньше текста с очень простым форматированием, которое можно выразить только жирным шрифтом и курсивом. Кроме того, Less использует различные возможности форматирования для внутреннего использования, например, для выделения результатов поиска и отображения строки режима внизу. Вот некоторые escape-последовательности, которые использует Less (я перечисляю только те возможности, которые целесообразно переназначить):
termcap terminfo
ks smkx make the keypad send commands
ke rmkx make the keypad send digits
vb flash emit visual bell
mb blink start blink
md bold start bold
me sgr0 turn off bold, blink and underline
so smso start standout (reverse video)
se rmso stop standout
us smul start underline
ue rmul stop underline
Чтобы показать вывод в цвете, используйте setaf
возможность (или AF
с Termcap).
Эти LESS_TERMCAP_*
параметры не указаны в LESS
документации. Лучшая ссылка, которую я могу предложить, - мой ответ здесь .
LESS_TERMCAP_*
переменные env, используя tput
вместо escape-символов.
Ответ Жиля превосходен, но это сделало меня любопытным:
Termcap в значительной степени устарел, его заменил Terminfo
Если Termcap устарел, я хочу переключиться на Terminfo
Я также хочу отключиться от Termcap, потому что нашел ошибку. Скажем, вы поместили переменную termcap в ваш ~/.profile
или подобный:
export LESS_TERMCAP_so=$(printf '\33[5;30;43m')
export LESS_TERMCAP_se=$(printf '\33[m')
После этого, если вы введете set
, переменные Termcap испортят ваш цветовой вывод.
Чтобы переключиться на Terminfo, вы можете сделать файл xterm-pretty.ti
:
xterm-pretty|xterm with pretty colors,
# exit standout mode
rmso=\e[m,
# begin standout mode
smso=\e[5;30;43m,
# similar terminal
use=xterm,
Скомпилируйте и установите файл:
tic xterm-pretty.ti
Добавить строку ~/.profile
или аналогичную:
TERM=xterm-pretty