내 현재 설정 은 다음 $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를 통해 로그인하는 대부분의 컴퓨터에서 이 터미널 유형을 사용할 수 없다는 것입니다.
.bashrc
Ubuntu의 기본 설정은 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가 발견되었습니다).
나는 terminfo가 대부분의/모든 Linux 변형에서 동일한 위치에 있다고 생각하지만 더 많은 터미널을 추가하는 것처럼 검색할 경로를 더 추가할 수 있습니다.
|| ls -1R /a/다른/경로 grep ^다른 터미널$조건부 테스트 및 배관.
답변2
문제가 발생하면 vt100으로 설정하는 것이 좋습니다 TERM
. 데비안 패키지에도 어디에나 설치됩니다 ncurses-base
. 제안된 답변(ansi, aterm, xterm-256color)에 언급된 대안에는 차이점이 있습니다 eterm-color
.
또한 제목 문자열 기능은 터미널 설명의 일부가 아닙니다. 원격 애플리케이션은 설정에 따라 이를 사용합니다 TERM
(예: "xterm"을 사용하는 모든 것).
엄밀히 말하면, 당신은 색깔을 잃을 것입니다(결국,vt100은 컬러로 처리된 적이 없습니다.). 어쨌든 일부 앱에서는 이 작업을 수행합니다.