특히 SSH 이후에 'eterm-color'를 사용할 수 없는 경우 emacs의 ansi-term에 대한 $TERM의 올바른 값은 무엇입니까?

특히 SSH 이후에 'eterm-color'를 사용할 수 없는 경우 emacs의 ansi-term에 대한 $TERM의 올바른 값은 무엇입니까?

$TERM현재 다음과 같이 설정 중입니다 xterm-256color.

if [[ -n "$EMACS" ]]; then
    export TERM=xterm-256color
    alias emacs="emacsclient --no-wait"
    export EDITOR="emacsclient --no-wait"
    export VISUAL="emacsclient"
fi

나는 그것을 로 설정하곤 했지만 eterm-color, 문제는 SSH를 통해 로그인하는 대부분의 컴퓨터에서 이 터미널 유형을 사용할 수 없다는 것입니다.

.bashrcUbuntu의 기본값은 TERM변수가 로 시작 하는지 확인하고 xterm-, 이 경우 창 제목을 설정하려고 시도합니다.

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

문제는 \[\e]0;비트입니다. xterm 호환 터미널 에뮬레이터로 구문 분석해야 하지만 emacs(ansi-term)는 그렇게 하지 않습니다. 그 결과는 다음과 같은 터미널입니다.

0;user@host: ~user@host:~$ 

또한 readline입력된 텍스트가 터미널 너비보다 큰 경우 를 사용하는 일부 응용 프로그램이 중단됩니다.

eterm-color일부 원격 호스트에서는 사용할 수 없고 설치할 수도 없기 때문에 해당 값으로 설정하면 less.

대부분의 배포판과 함께 제공되는 다른 터미널 유형이나 안티 용어를 인식하게 만드는 해킹과 같이 내가 사용할 수 있는 트릭이 있습니까?관련 이스케이프 코드제목을 설정할까요, 아니면 그냥 버릴까요?

답변1

나는 원격 호스트에서 어떤 터미널을 사용할 수 있는지 구체적으로 알아낸 다음 설정할 수 있는 접근 방식을 고안했습니다. 일반적으로 ansi 호환 터미널이 하나 이상 있으므로 이를 위조하는 '해킹'은 불필요합니다.

하나의 긴 ssh 명령을 수행하면 다음과 같이 표시됩니다.

ssh -i ~/.ssh/some_key.pub -tty some_remote_server "export TERM=`ls -1R /usr/share/terminfo | grep ^eterm-color$ || ls -1R /usr/share/terminfo | grep ^aterm $ || ls -1R /usr/share/terminfo | grep ^ansi$ || ls -1R /usr/share/terminfo | grep ^xterm-256color$ ||

이는 원격 호스트의 기본 설정 순서에 따라 다양한 ANSI 호환(및 비호환) 터미널 유형을 찾고 EMACS를 시작하기 전에 발견된 첫 번째 유형을 설정합니다. 선호하는 유형이 발견되지 않으면 'xterm' 유형을 사용하도록 TERM을 설정하여 EMACS가 실제로 시작되도록 합니다.

이 예에서는 eterm-color, aterm, ansi, xterm-256color를 순서대로 찾고 있습니다. 나는 EMACS를 많이 사용하는 사용자가 아니므로 이것이 실제로 최고인지는 확실하지 않습니다. 저는 CentOS에서 이 출시를 테스트했고 잘 작동했습니다(테스트에서 eterm-color를 발견했습니다).

나는 용어 ​​정보가 대부분의/모든 Linux 변형에서 같은 위치에 있다고 생각하지만 더 많은 터미널을 추가하는 것과 동일한 방식으로 더 많은 경로를 추가하여 검색할 수 있습니다.

|| ls -1R /a/다른/경로 | grep ^someotherterminal$
조건부 테스트 및 파이프.

답변2

문제가 발생하면 vt100으로 설정하는 것이 좋습니다 TERM. 데비안 ncurses-base패키지를 포함해 모든 곳에 설치됩니다. 제안된 답변(ansi, aterm, xterm-256color)에 언급된 대안에는 eterm-color.

또한 제목 문자열 기능은 터미널 설명의 일부가 아닙니다. 귀하의 원격 애플리케이션은 예를 들어 "xterm"을 사용하는 모든 것의 설정을 기반으로 이를 사용하고 있습니다 TERM.

기술적으로는 색상이 손실될 수 있습니다(결국,vt100은 컬러링을 한 적이 없습니다.). 어쨌든 일부 응용 프로그램에서는 이 작업을 수행합니다.

관련 정보