xterm을 사용하여 여러 Unices에서 백스페이스가 일관되게 작동하도록 하세요.

xterm을 사용하여 여러 Unices에서 백스페이스가 일관되게 작동하도록 하세요.

저는 세 가지 다른 Unices(Linux, Solaris, AIX)를 사용하고 모두 동일한 홈 디렉토리 등을 사용하는 회사에서 일하고 있습니다. 그들은 모두 GNU coreutils(감사합니다!)를 사용하지만, 다양한 문제를 해결하려고 노력하는 것은 여전히 ​​"재미있습니다". 우리는 그들을 실행하여 연결하므로 ssh지금은 제외하겠습니다).

특히, Solaris에서 백스페이스 키를 사용하는 데 문제가 있습니다. Bash에서는 작동하지만 일부 다른 응용 프로그램(특히 readline 기반 응용 프로그램)에서는 ^H만 인쇄합니다.

stty erase ^H현재 내 솔루션 ~/.profile과 내 다음 솔루션을 사용하고 있습니다 ~/.Xdefaults.

*VT100.Translations: #override \
              <Key>BackSpace: string(0x08)\n

이는 대부분의 경우 작동하는 것처럼 보이지만 백스페이스 키를 모든 플랫폼에서 기본/선호되지 않는 키로 명시적으로 설정하므로 이상적이지 않을 수 있습니다. 특히, 나는 그것을 사용하는 동안 지우기를 ^H로 설정했다는 것을 상기시키는 메시지를 자주 받고 reset, 아직 파악하지 못한 일련의 상황에서 때때로 다시 중단됩니다. 아마도 이것이 readline 기반 응용 프로그램에서 작동할 것입니다. , 하지만 bash에서는 그렇지 않습니다. reset모든 것을 정상으로 되돌리려면 입력해야 합니다 .

이러한 문제로 인해 나는 이것이 선호되는 방법이 아닐 수도 있다고 믿게 되었습니다. 이 상황에 대한 개선 사항이 있는 사람이 있습니까?

답변1

일부 애플리케이션은 특정 삭제 문자를 예상하도록 하드 코딩되어 있으며 이에 대해 사용자가 할 수 있는 일은 없습니다.

하지만 댓글의 경우

TTY 장치에서 예상하는 기본 백스페이스 키와 일치하도록 xterm에서 보낸 백스페이스 키를 가져오기 위해 수행해야 할 다른 작업이 있는지 궁금합니다.

할 수 있다설정pty 초기 지우기자원:

"true"이면 xterm은 의사 터미널의 stty 삭제 값을 사용합니다. "false"이면 xterm은 가능한 경우 termcap 항목의 kb 문자열을 참조로 사용하여 자체 구성과 일치하도록 stty 삭제 값을 설정합니다. 두 경우 모두 결과는 다음에 적용됩니다.TERMCAPxterm에 의해 설정된 변수.

또한보십시오tty 모드재정의할 수 있는 리소스입니다. 기본값은 "거짓"입니다.

그러나 xterm행동을 일관되게 만드는 것이 ttyModes효과적입니다. 변경 사항은 stty시스템에 예상되는 내용만 알려준다는 점을 기억하세요. 당신은 변경할 수 있습니다뒤로 화살표(백스페이스 키) 사용할 키화살표 키 확인자원:

여부를 지정뒤로 화살표백스페이스(8) 또는 삭제(127) 문자를 전송하는 키입니다. 이는 다음에 해당합니다.DECBKM 제어 순서. "true" 값은 백스페이스 키를 지정합니다. 기본값은 "true"입니다. 이 동작을 전환하려면 Ctrl 키를 누르세요.

관련 정보