![GNU 화면에서 "tab"과 "shift+tab"을 바인딩하는 방법은 무엇입니까?](https://linux55.com/image/51255/GNU%20%ED%99%94%EB%A9%B4%EC%97%90%EC%84%9C%20%22tab%22%EA%B3%BC%20%22shift%2Btab%22%EC%9D%84%20%EB%B0%94%EC%9D%B8%EB%94%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
키 Tab와 ShiftTab화면을 바인딩하는 방법은 무엇입니까? 내 문제는 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 CAP
CAP를 사용하는 것입니다.termcap
예를 들어,
bind -k ku focus up
Up로 전송된 문자 시퀀스를 바인딩하는 데 사용됩니다 focus up
. 배경 탭의 경우 다음과 같아야 합니다.
bind -k kB focus up
불행히도 어떤 이유로 작동하지 않는 것 같습니다. 왜 그런지 모르겠어. 내 첫 번째 설명이 잘못되었습니다. 이것은 ncurses
termcap 등가물이 올바르게 처리되지 않는 것과 관련이 있는 것 같습니다 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+ 뒤에 있었습니다.^[[Z
CtrlA
^[
복사/롤백 모드 시작[
중단하다- 그런 다음 표시
Z
즉, 표준 VT100 스타일 이스케이프 문자 시퀀스가 복사/롤백 모드 문자 시퀀스와 충돌합니다. 그래서 kB
+를 누를 때 입력 버퍼에 삽입되는 문자열을 변경하기 위해 백탭 termcap 이름에 대한 키 바인딩을 추가했습니다 .ShiftTab^[OB
화면 매뉴얼 페이지의 "번역 입력" 섹션을 참조하십시오.