infocmp에서는 그렇게 말하지 않지만 xterm과 screen 사이의 TERM ANSI 이스케이프 시퀀스 호환성

infocmp에서는 그렇게 말하지 않지만 xterm과 screen 사이의 TERM ANSI 이스케이프 시퀀스 호환성

저는 Mac의 zsh에서 tmux를 사용하여 스크립트를 만들고 있습니다.https://unix.stackexchange.com/users/22565/st%c3%a9phane-chazelas답변, tmux를 사용할 때 호스트 시스템과 다른 인터프리터를 사용한다는 것을 발견했습니다.

따라서 스크립트된 tput 명령의 동일한 텍스트를 tty 및 tmux 창 모두에 출력할 때 생성 중인 ANSI 이스케이프 시퀀스와 일부 비호환성이 있는지 궁금합니다.

$TERM이 내 Mac에서는 xterm-256color이고 tmux 창에서는 screen-256color라는 것을 알았으므로 발행합니다.

%> infocmp xterm-256color screen-256color

저는 tputclear, civis, sgr0, cnorm, rc, sc, home, cd, cr, el, cub1, cud, cuf를 사용하는 코드를 사용하고 있습니다. 코드가 실행 중이고 출력은 xterm 컨텍스트에서 tput을 사용하여 생성되며 티업 시 tty와 tmux 모두에서 잘 렌더링됩니다.

그러나 예를 들어 infocmp에 따르면 Clear는 두 용어에 대해 서로 다른 이스케이프 시퀀스를 갖습니다.

comparing xterm-256color to screen-256color.
        clear: '\E[H\E[2J', '\E[H\E[J'

그럼 어떻게 작동하나요?

부가적인 질문으로 내 명령의 msot가 비교에 표시되지 않습니다. 이는 이론적으로 지원되지 않거나 두 용어 모두에서 공통적이라는 의미입니까?

답변1

(ECMA-48) 표준 터미널에서는 두 문자열의 효과에 차이가 없기 때문에 작동합니다. 둘 다 커서를 화면의 왼쪽 상단으로 보냅니다. 그런 다음 하나( \E[J)는 화면의 나머지 부분을 지우고 다른 하나( \E[2J)는 전체 화면을 지웁니다.

CSI Ps J  Erase in Display (ED), VT100.
            Ps = 0  ⇒  Erase Below (default).
            Ps = 1  ⇒  Erase Above.
            Ps = 2  ⇒  Erase All.
            Ps = 3  ⇒  Erase Saved Lines, xterm.

(에서XTerm 제어 순서)

관련 정보