tmux 내 터미널의 텍스트에 스타일을 적용하는 데 이스케이프 시퀀스가 ​​필요하지 않은 이유는 무엇입니까?

tmux 내 터미널의 텍스트에 스타일을 적용하는 데 이스케이프 시퀀스가 ​​필요하지 않은 이유는 무엇입니까?

0ANSI 색상을 빨간색으로 지정 하려면 urxvt터미널에서 시퀀스를 \e]4;0;red\a후자에 전달해야 합니다.

printf '\e]4;0;red\a'

일반적인 구문을 찾았습니다.여기:

OSC 4 ; c ; spec BEL

내부적으로 tmux는 작동하지 않습니다. 아마도 tmux터미널 이전에 소비되었기 때문일 것입니다. 따라서 발견된 다른 시퀀스로 이를 보호해야 합니다.여기:

printf '\ePtmux;\e\e]4;0;red\a\e\\'

이제 밑줄을 긋는 등 특정 스타일을 텍스트에 적용하려면 내부에서 수행하든 외부에서 수행하든 상관없습니다 tmux. 항상 동일한 순서가 작동하는 것 같습니다.

printf '\e[4m underline \e[0m'

(섹션)에 설명된 대로 비공식 terminfo 확장자를 추가 및 설정 하고 내부 커서 모양을 변경하는 옵션을 ~/.tmux.conf설정했기 때문에 이러한 차이점이 설명될 수 있다고 생각했습니다.terminal-overridesSsSetmuxman tmuxTERMINFO EXTENSIONS

set-option -as terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'

하지만 내부 텍스트에 스타일을 적용하려고 하면 tmux아무런 구성 없이 후자를 시작합니다.

tmux -Ltest -f/dev/null

내부적으로 필요한 만큼 시퀀스를 보호 tmux할 필요가 없는 이유는 무엇입니까 ?\e[4m underline \e[0m\e]4;0;red\a

답변1

tmuxXTerm이 아닙니다(XTerm 내에서 사용하더라도). 이는 사용 중인 모든 터미널 위에 위치하여 자체 터미널 에뮬레이터(물론 멀티플렉서) 역할을 합니다. 귀하가 링크한 페이지는 XTerm 제어 시퀀스용으로, (매우 유용하지만) 모든 터미널에서 작동하지는 않습니다. 의 경우 screen온라인 매뉴얼 페이지에 screen(1)허용되는 제어 시퀀스가 ​​나열되어 있습니다. tmux(1)유사한 섹션을 포함하지 않지만, 현재 동작이 에 엄격하게 문서화되어 있지는 않지만 적어도 몇 년 전 작성자의 목표를 반영하는 1984 터미널의 다양한 제어 시퀀스에 대한 오래된 설명이 있습니다 tools/ansicode.txt.

어쨌든 텍스트 속성 설정을 위한 SGR 시퀀스는 색상 팔레트를 변경하는 데 사용되는 것과 같은 "운영 체제 명령"보다 더 보편적으로 지원됩니다. 동일한 링크 페이지에서:

CSI오후m 역할 속성(SGR)

  • Ps = 0 -> 정상(기본값).
  • Ps = 1 -> 굵게 표시됩니다.
  • Ps = 2 -> 약하고 감소된 강도(ISO 6429).
  • Ps = 3 -> 이탤릭체(ISO 6429).
  • Ps = 4 -> 밑줄
  • Ps = 5 -> 깜박임(X11R6 xterm에서는 굵게 표시됨).
  • Ps = 7 -> 역.
  • Ps = 8 -> 보이지 않음, 즉 숨김(VT300).
  • Ps = 9 -> 줄이 그어진 문자(ISO 6429).
  • Ps = 2 1 -> 이중 밑줄(ISO 6429).
  • Ps = 2 2 -> 보통(대담하지도 희미하지도 않음).
  • Ps = 2 3 -> 이탤릭체 아님(ISO 6429).
  • Ps = 2 4 -> 밑줄 없음.
  • Ps = 2 5 -> 안정적(깜박이지 않음).
  • Ps = 2 7 -> 양수(역수가 아님).
  • Ps = 2 8 -> 표시됩니다. 즉, 숨겨지지 않습니다(VT300).
  • Ps = 2 9 -> 지워지지 않음(ISO 6429).
  • Ps = 3 0 -> 전경색을 검정색으로 설정합니다.
  • Ps = 3 1 -> 전경색을 빨간색으로 설정합니다.
  • Ps = 3 2 -> 전경색을 녹색으로 설정합니다.
  • Ps = 3 3 -> 전경색을 노란색으로 설정합니다.
  • Ps = 3 4 -> 전경색을 파란색으로 설정합니다.
  • Ps = 3 5 -> 전경색을 자홍색으로 설정합니다.
  • Ps = 3 6 -> 전경색을 청록색으로 설정합니다.
  • Ps = 3 7 -> 전경색을 흰색으로 설정합니다.
  • Ps = 3 9 -> 전경색을 기본값(원본)으로 설정합니다.
  • Ps = 4 0 -> 배경색을 검정색으로 설정합니다.
  • Ps = 4 1 -> 배경색을 빨간색으로 설정합니다.
  • Ps = 4 2 -> 배경색을 녹색으로 설정합니다.
  • Ps = 4 3 -> 배경색을 노란색으로 설정합니다.
  • Ps = 4 4 -> 배경색을 파란색으로 설정합니다.
  • Ps = 4 5 -> 배경색을 마젠타색으로 설정합니다.
  • Ps = 4 6 -> 배경색을 청록색으로 설정합니다.
  • Ps = 4 7 -> 배경색을 흰색으로 설정합니다.
  • Ps = 4 9 -> 배경색을 기본값(원본)으로 설정합니다.

(예감이 들어요오후원래추신프로젝트에 맞게. )

tmux이는 애플리케이션에서 자주 사용되며 사용자는 지원 부족으로 인해 좌절감을 느낄 수 있으므로 이를 직접 지원하는 것이 합리적입니다 .

\033]P0ff0000\033\\Linux 콘솔은 팔레트 인덱스 0을 red : 로 설정하기 위해 다른 이스케이프 시퀀스를 사용한다는 점도 주목할 가치가 있습니다. 일반적으로 는 팔레트 인덱스(16진수로 표시됨)이고 는 OSC P n rr gg bb ST색상(역시 16진수로 표시됨)입니다.nrr gg bb

관련 정보