Почему нет необходимости экранировать последовательность, чтобы применить стиль к тексту в терминале внутри tmux?

Вы можете сделать это с помощью yturl , например, используя mpv или mplayer :

mpv --no-video "$(yturl )"
mplayer -novideo "$(yturl )"

Отказ от ответственности: я являюсь автором yturl.

2
12.02.2018, 23:59
1 ответ

tmuxне является XTerm (, даже если вы используете его внутри XTerm ). Он действует как собственный эмулятор терминала (и, конечно же, как мультиплексор )поверх любого используемого вами терминала. Страница, на которую вы ссылаетесь, представляет собой управляющие последовательности XTerm, которые (, хотя и очень полезны ), не применимы к каждому существующему терминалу. Для screen,на странице интерактивного руководства screen(1)перечислены последовательности управления, которые он принимает. tmux(1)не содержит аналогичного раздела, но есть старое описание различных управляющих последовательностей для терминалов, датированное 1984 годом, отражающее, по крайней мере, то, к чему стремились его авторы несколько лет назад, хотя и не строго документирующее его текущее поведение, в его исходном коде. в tools/ansicode.txt.

В любом случае, последовательности SGR для установки текстовых атрибутов поддерживаются более универсально, чем «Команды операционной системы», такие как та, которую вы используете для изменения цветовой палитры. С той же связанной страницы:

CSI Pm m Character Attributes (SGR)

  • Ps = 0 -> Normal (default).
  • Ps = 1 -> Bold.
  • Ps = 2 -> Faint, decreased intensity (ISO 6429).
  • Ps = 3 -> Italicized (ISO 6429).
  • Ps = 4 -> Underlined
  • Ps = 5 -> Blink (appears as Bold in X11R6 xterm).
  • Ps = 7 -> Inverse.
  • Ps = 8 -> Invisible, i.e., hidden (VT300).
  • Ps = 9 -> Crossed-out characters (ISO 6429).
  • Ps = 2 1 -> Doubly-underlined (ISO 6429).
  • Ps = 2 2 -> Normal (neither bold nor faint).
  • Ps = 2 3 -> Not italicized (ISO 6429).
  • Ps = 2 4 -> Not underlined.
  • Ps = 2 5 -> Steady (not blinking).
  • Ps = 2 7 -> Positive (not inverse).
  • Ps = 2 8 -> Visible, i.e., not hidden (VT300).
  • Ps = 2 9 -> Not crossed-out (ISO 6429).
  • Ps = 3 0 -> Set foreground color to Black.
  • Ps = 3 1 -> Set foreground color to Red.
  • Ps = 3 2 -> Set foreground color to Green.
  • Ps = 3 3 -> Set foreground color to Yellow.
  • Ps = 3 4 -> Set foreground color to Blue.
  • Ps = 3 5 -> Set foreground color to Magenta.
  • Ps = 3 6 -> Set foreground color to Cyan.
  • Ps = 3 7 -> Set foreground color to White.
  • Ps = 3 9 -> Set foreground color to default (original).
  • Ps = 4 0 -> Set background color to Black.
  • Ps = 4 1 -> Set background color to Red.
  • Ps = 4 2 -> Set background color to Green.
  • Ps = 4 3 -> Set background color to Yellow.
  • Ps = 4 4 -> Set background color to Blue.
  • Ps = 4 5 -> Set background color to Magenta.
  • Ps = 4 6 -> Set background color to Cyan.
  • Ps = 4 7 -> Set background color to White.
  • Ps = 4 9 -> Set background color to default (original).

(У меня такое ощущение, что Pm должен был быть Ps , чтобы соответствовать предметам.)

Вполне логично, что tmuxбудет поддерживать их напрямую, поскольку они часто используются приложениями, и пользователи могут быть разочарованы отсутствием поддержки.

Также стоит отметить, что консоль Linux использует другую управляющую последовательность для установки индекса палитры 0 на красный:\033]P0ff0000\033\\. Как правило, это OSC P n rr gg bb ST, где n— индекс палитры (в шестнадцатеричном формате ), а rr gg bb— цвет (также в шестнадцатеричном формате ).

5
27.01.2020, 21:55

Теги

Похожие вопросы