Bash에서 Readline을 사용하여 키 바인딩을 정의할 때 "\M-\C-"를 키 시퀀스 접두어로 사용하는 방법은 무엇입니까?

Bash에서 Readline을 사용하여 키 바인딩을 정의할 때 "\M-\C-"를 키 시퀀스 접두어로 사용하는 방법은 무엇입니까?

"\M-\C-k": kill-whole-line내 파일을 넣으면 ~/.inputrc결과는 "\213": kill-whole-line(로 표시 됩니다 bind -p)입니다.

그러나 ( ) \M-로 변경하면 키 바인딩이 예상대로 작동합니다.\e"\e\C-k": kill-whole-line

Readline을 사용하여 키 바인딩을 정의할 때 \M-\C-("meta-control")을 접두사로 어떻게 사용합니까 bash?

답변1

\M-고장나서 사용할 수 없습니다 . 계속해서 \eMeta/Alt 접두사를 사용하세요 .

높은 비트를 켜거나 UTF-8 로케일을 사용하는 대신 Meta/Alt를 누를 때 ESC() 문자 앞에 ESC( ) 문자를 추가하는 터미널 에뮬레이터 에서는 readline 바인딩에서 사용이 \M-안정적으로 작동하지 않습니다 \x1b(두 언어 모두 일반적으로 대부분의 최신 시스템[1]).

일부 bash 버전의 경우(예: 5.0, 하지만아니요최신 5.1), 사용은 \C-\M-다르게 작동하므로 대신 \M-\C-사용하면 다음 업데이트까지 실제로 원하는 작업이 수행됩니다. ;-)\C-\M-k\M-\C-k

bash-5.0$ bind '"\C-\M-k": shell-backward-kill-word'
bash-5.0$ bind '"\M-\C-k": shell-kill-word'
bash-5.0$ bind -p | grep -a shell-.*kill-word
"\e\C-k": shell-backward-kill-word
"\213": shell-kill-word

[1]: 하지만 아니요 . 와 xterm같은 것이 필요합니다 .XTerm*VT100.metaSendsEscape: true~/.Xresources

관련 정보