추가 읽기

추가 읽기

현재 SSH를 통해 원격 컴퓨터에서 인코딩해야 합니다. Cygwin에서 이 프로그램을 실행 mintty하면 tmux연결이 끊어져도 emacs가 계속 실행됩니다. tmux보고서에는 모든 것이 괜찮았으나 열쇠가 파손되었다고 나와 TERM=screen있었습니다 <end>. Emacs는 이를 로 보고합니다 <select>. tmux 내부의 쉘에서 간단한 작업을 수행하면 cat키가 로 보고됩니다 ^[[4~. 대상 머신은 Ubuntu 16.04.6 LTS입니다. end 키는 예상대로 작동하므로 zshemacs와 관련이 있는 것 같습니다.

Cygwin에서 로컬로 emacs를 실행하면 tmux모든 것이 잘 작동합니다. 그래서 나는 그것이 목표 시스템과 관련이 있다고 생각합니다. <select>어색해 보이기 때문에 다시 바인딩하고 싶지 않습니다 . 이것은 Emacs의 버그입니까? 버전은 입니다 GNU Emacs 26.3.

C-a이 문제는 and를 사용하여 해결할 수 있지만 C-e올바른 솔루션을 선호합니다.

답변1

부품 적용, 부품 구성. 터미널 설명이 VT220 또는 PC(무엇이든)를 에뮬레이트하도록 설계되었는지 여부에 따라 키보드 편집기는 키에 다른 이름을 할당할 수 있습니다. 또한 저주 애플리케이션은 첫 번째 항목만 볼 수 있으므로 중복 항목은 표시되고(경고 표시) 일반적으로 제거됩니다.

Emacs는curses응용프로그램은 아니지만 ncurses에서 제공하는 터미널 설명을 사용합니다. 따라서 터미널 설명에는 end/select 중 하나가 표시됩니다. 터미널 설명을 변경할 수 있습니다...

추가 자료:키보드가 작동하지 않는 이유는 무엇입니까?

(이에 대한 더 긴 설명이 xterm에 있습니다.용어 정보문서).

답변2

이맥스 맞습니다. 저것키의 (원래) 제어 순서 select. 그러나 이는 우회적인 과정을 통해 달성될 가능성이 높습니다.

DEC VT102에는 편집 키보드가 없습니다. 이는 새로운 모델이 등장함에 따라 발생합니다. 이는 커서 키보드 위 중앙 오른쪽에 편집 키보드가 있는 DEC VT320 키보드입니다.

DEC VT320 키보드입니다

키보드 편집을 위한 DEC VT220 제어 시퀀스는 이 모든 것의 기원입니다(DEC VT420부터 추가된 수정자를 인코딩하는 기능 포함).

  • find:DECFNK 1(예: CSI 1 ~또는 CSI1 ; 기준 치수 ~)
  • insert:DECFNK 1(예: CSI 2 ~또는 CSI2 ; 기준 치수 ~)
  • remove라고도 함 delete: DECFNK 3(예: CSI 3 ~또는 CSI3 ; 기준 치수 ~) 또는 삭제
  • select:DECFNK 4(예: CSI 4 ~또는 CSI4 ; 기준 치수 ~)
  • next screen라고도 함 PgDn: DECFNK 5(예: CSI 5 ~또는 CSI5 ; 기준 치수 ~)
  • prev screen라고도 함 PgUp: DECFNK 6(예: CSI 6 ~또는 CSI6 ; 기준 치수 ~)

SCO XENIX 멀티스크린 콘솔은 IBM Model M 키보드가 장착된 시스템에서 실행되며 다음을 정의합니다.

  • home: CUP(즉, CSI는 H이론적으로 CSI로 확장될 수 있음)1 ; 기준 치수 H)
  • end: CPL(즉, CSI는 F이론적으로 CSI로 확장될 수 있음)1 ; 기준 치수 F)

DEC VT52x는 이러한 추가 제어 시퀀스를 포함하여 SCO 콘솔의 일부 콘텐츠를 복사합니다. 두 가지 가능성이 있습니다마련하다~의키보드 수정DEC VT52x에서:

  • VT 레이아웃, DEC VT220/320/420과 동일:
    • find insert remove
    • select prev next
  • 컴퓨터 레이아웃, IBM 모델 M과 동일:
    • insert home PgUp
    • delete end PgDn

이러한 기능은 단말기 자체의 펌웨어 설정 제어에 따라 물리적으로 구분되는 키 배열로 이동됩니다. 그러나 함수에서 제어 시퀀스로의 매핑은변함이 없다.

문제는 samizdat와 늙은 아내의 이야기로 인해 사람들이 이를 여러 터미널에 함께 묶는다는 것입니다.에뮬레이터. 예를 들어 Linux 커널에 내장된 터미널 에뮬레이터는 두 가지를 혼합한 것입니다. "PC 레이아웃"을 사용하지만 (다른 곳에서 SCO Multiscreen을 모방함에도 불구하고) home및 에 대해 잘못된 제어 시퀀스를 보냅니다 end. 시퀀스를 보내고 제어 find합니다 select.

이제 오류가 포함되었습니다. 그리고 그것은 거기에서 퍼졌습니다.

  • 예를 들어 mintty는 일반적으로 homeSCO 시퀀스를 보냅니다 end. 그러나 Linux 터미널 에뮬레이터와 동일한 방식으로 작동하는 "VT220 모드"가 있습니다.VT220의 동작이 아님, 특히 왜냐하면"PC" 레이아웃을 사용합니다.VT220 번호
  • homeendrxvt는 커서 키보드 DECFNK 7 및 DECFNK 8에 대한 두 DECFNK 할당과 겹치는 완전히 잘못된 DECFNK 코드를 사용합니다 .

이로 인해 계속해서 가벼운 딸꾹질이 발생합니다.

가장 일반적인 문제는 올바른 터미널 유형을 사용하지 않는 것입니다. terminfo 데이터베이스에는 다음 항목이 포함되어 있습니다.putty,mintty,linux외. /// 이러한 유형의 터미널에서 방출되는 값을 사용하여 kend적절한 기능을 정의합니다 . khome그러나 만일kfndkslt잘못된사용vt220대신 민트처럼TERM선택적으로 환경 변수 로 설정, mintty가 보내는 내용은 애플리케이션에서 및 으로 이해 home됩니다 .endfindselect

귀하의 경우에 이런 일이 일어나고 있을 수 있습니다. 한 가지 작은 문제는 이해를 수행하는 애플리케이션이 tmux라는 것입니다. tmux는 상속된 설정을 select기반으로 제어 시퀀스를 유사한 것으로 인식한 다음 이를 다시 인코딩하여 전달합니다.TERMvt220

추가 읽기

관련 정보