GNU 화면에서 "tab"과 "shift+tab"을 바인딩하는 방법은 무엇입니까?

GNU 화면에서 "tab"과 "shift+tab"을 바인딩하는 방법은 무엇입니까?

TabShiftTab화면을 바인딩하는 방법은 무엇입니까? 내 문제는 bind이러한 키 입력을 지정하기 위해 화면 명령에 무엇을 전달해야 할지 모른다는 것입니다 .

그건 그렇고, 나도 알아GNU 화면: 지역 간 이동그러나 대답은 존재하지 않습니다.

다음 작업은 모두 오류로 인해 실패합니다 -X: bind: character, ^x, or (octal) \032 expected.

screen -X bind "\033[Z" focus up
screen -X bind "^[[Z" focus up
screen -X bind "\t" focus up
screen -X bind \033[Z focus up
screen -X bind ^[[Z focus up
screen -X bind \t focus up

Enter 명령을 누르면 CtrlA:같은 일이 발생합니다 .

답변1

bindkey지정된 문자 시퀀스를 사용하는 것과 달리 bind이를 수행하는 유일한 방법은 기능이 중요한 경우 bind -k CAPCAP를 사용하는 것입니다.termcap

예를 들어,

bind -k ku focus up

Up로 전송된 문자 시퀀스를 바인딩하는 데 사용됩니다 focus up. 배경 탭의 경우 다음과 같아야 합니다.

bind -k kB focus up

불행히도 어떤 이유로 작동하지 않는 것 같습니다. 왜 그런지 모르겠어. 내 첫 번째 설명이 잘못되었습니다. 이것은 ncursestermcap 등가물이 올바르게 처리되지 않는 것과 관련이 있는 것 같습니다 kcbt.

$ infocmp -1 | grep Z
    cbt=\E[Z,
    kcbt=\E[Z,
$ infocmp -1C | grep Z
    :bt=\E[Z:\

(kcbt는 kB로 변환되지 않습니다).

내 항목에 추가하는 경우 ~/.screenrc:

 termcapinfo * kr=\E[Z
 bind -k kr focus up

즉, 내가 screen당신에게 그렇게 말하면 상관없습니다주인터미널( *), 보내기 F63( kr) \E[Z및 바인딩을 F63수행 focus up하면 됩니다. 하지만 지금 누르면 Shift+Tab전송됩니다.화면 내 \EOC, 이는 터미널 에뮬레이터에 의해 표시되는 문자 시퀀스입니다.화면(호스트 터미널과 반대로) 전송을 구현합니다 F63.

답변2

bindkey -k kB stuff ^[OZ
bind -k kB focus up

CtrlA내 경우에는 + - + 를 눌렀을 때 문제가 발생했습니다. Shift삽입된 문자열은 다음으로 변환된 Tab+ 뒤에 있었습니다.^[[ZCtrlA

  • ^[복사/롤백 모드 시작
  • [중단하다
  • 그런 다음 표시Z

즉, 표준 VT100 스타일 이스케이프 문자 시퀀스가 ​​복사/롤백 모드 문자 시퀀스와 충돌합니다. 그래서 kB+를 누를 때 입력 버퍼에 삽입되는 문자열을 변경하기 위해 백탭 termcap 이름에 대한 키 바인딩을 추가했습니다 .ShiftTab^[OB

화면 매뉴얼 페이지의 "번역 입력" 섹션을 참조하십시오.

관련 정보