문맥:
저는 zsh를 사용하고 vi 편집 모드를 사용합니다. 히스토리에 올라가려면 ESC
일반 모드 진입 후 를 누르는 대신 문자 보내기를 k
누르고 포스트스크립트를 보냅니다 (제가 이해한 바입니다)alt+k
esc
k
질문:
SSH 세션을 시작할 때까지는 제대로 작동하고 세션을 닫은 후에도 작동하지 않습니다. 대신 을 누르면 문자가 alt+k
삽입됩니다 ë
.
현재 이해: 이는 쉘이 아니라 터미널과 관련이 있습니다. 그러나 SSH 세션을 열면 제가 생각할 수 없는 터미널의 일부 런타임 속성이 변경됩니다.
st git commit: 63776c0962874dfab135a595a765b4d3b5fbcb65(현재 주요 버전)
유용한 아이디어가 있으면 크게 감사하겠습니다.
추신: 저는 터미널이 내부적으로 어떻게 작동하는지 거의 알지 못합니다.
답변1
7비트 문자 세트를 사용하고 문자의 상위 비트를 자유롭게 수정할 수 있다고 가정하는 "메타"를 말하는 오래된 방법이 있습니다. 실제로 UTF-8은 물론이고 8비트 문자 집합도 잘 처리하지 못하며 결과 문자는 보시다시피 일반인에게 혼란을 줍니다. XTerm 및 Simple Terminal을 포함한 일부 터미널 에뮬레이터만 이를 지원하며 ECMA-48 공급업체별 설정/재설정 모드 제어 시퀀스(매개변수 1034)를 통해 켜고 끌 수 있습니다. terminfo 용어로 이것은 "메타 모드"입니다.
SSH를 통해 액세스하는 원격 시스템의 프로그램에 어떤 이유로 "메타 모드"가 켜져 있고 다시 꺼지지 않습니다. DECRST 1034 제어 시퀀스를 직접 인쇄하여 메타 모드를 끌 수 있습니다 printf
.
printf '\e[?%ul' 1034또는 (terminfo 버전)
tput
명령을 사용하십시오.출력 파워
참고: kbd 패키지(Debian Linux와 같은 운영 체제)의 명령이 작동할 것이라고 기대하지 마십시오 setmetamode
. Linux의 내장 가상 터미널에 특정한 모드를 변경하는 특별한 방법을 사용하기 때문입니다.