如果我放入"\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-
因为它坏了。继续使用\e
Meta/Alt 前缀。
在 readline 绑定中使用\M-
不能可靠地与终端仿真器一起使用,终端仿真器\x1b
在按下 Meta/Alt 时前置一个 ESC ( ) 字符而不是打开高位和/或使用 UTF-8 语言环境(这两种语言通常是大多数现代的默认设置)系统[1])。
对于某些版本的 bash(例如5.0
,但是不是较新的5.1
), using 的\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
.