최근에 나는 bash 단축키를 검토하고 내 tmux 활성화 키에 적합한 단축키를 찾으려고 노력했습니다.
나는 bash 단축키에 사용되지 않는 ctrl + m
것이 흥미롭다고 생각합니다 .ctrl + q
https://en.wikipedia.org/wiki/Bash_(Unix_shell).
왜 사용되지 않습니까? 나는 ctrl + m
그것이 매우 편리하다고 생각합니다.
이 두 가지 조합을 사용하도록 설계되었습니까 DIY (define it yourself)
? 아니면 또 다른 이야기가 있나요?
답변1
Ctrl+M은 터미널(RET)의 Enter 키와 동일한 문자를 보냅니다. 프로그램은 키를 구별할 수 없으므로 키를 개별적으로 구성할 수 없습니다.
Ctrl+Q가 사용되었습니다.XON기본적으로 Bash는 이를 사용할 수 없지만 tmux는 원시 입력 모드를 사용하므로 tmux와 함께 사용할 수 있습니다.
GUI 프로그램은 수정자 Ctrl을 사용하고 단축키로 Ctrl+m을 사용하여 m 키를 눌러 키보드에서 읽을 수 있지만 쉘이나 터미널 프로그램은 Ctrl+키 조합을 0에서 26까지의 ASCII 문자로 수신합니다.
Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2
등. 이것을 시도하여 값을 볼 수 있습니다
cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006 \n
값을 입력하려면 Ctrl+[af]를 누르기 전에 Ctrl+v를 눌러 해당 값이 원시 값으로 해석되지 않도록 하세요.
ascii(7) 테이블을 보면 테이블의 제어 코드를 볼 수 있으며 왼쪽에는 해당 문자 @..Z가 있습니다. 예를 들어
015 13 0D CR '\r' (carriage ret) 115 77 4D M
또는
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
Bash 이전의 제어 코드 해석의 다음 단계는 stty입니다(터미널 설정을 변경하고 인쇄합니다).
stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
lnext
start
or 및 의 의미는 stty(1)을 참조하세요 stop
.
readline(3)도 참조하세요. bash와 기타 GNU cli 프로그램은 이 라이브러리를 사용하여 입력 줄을 제어하고 물론 bash(1) /READLINE(bash 매뉴얼 페이지의 readline 섹션)을 제어하기 때문입니다.
참고: XYZ(NUM)은 섹션 NUM의 매뉴얼 페이지 XYZ를 의미하므로 결과는 입니다 man NUM XYZ
.