![是否可以将多个命令分配给一个热键? (bash、xterm)](https://linux22.com/image/49582/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%E5%A4%9A%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%88%86%E9%85%8D%E7%BB%99%E4%B8%80%E4%B8%AA%E7%83%AD%E9%94%AE%EF%BC%9F%20%EF%BC%88bash%E3%80%81xterm%EF%BC%89.png)
过去,如果我的光标位于一个很长的 shell 命令的中间,我只需按Ctrl+C即可获得一个新的命令提示符。
然后我了解了Ctrl+ K/ C,生活很美好。不幸的是,这些序列对我来说有点尴尬,所以现在我想映射一个快捷方式来用一个序列重置整行。
是否可以映射像Ctrl+X这样的东西来执行这两个命令?我检查了变量man bash
并发现了kill-whole-line
,但我不确定如何在我的 .bashrc 中实现它——或者这是否是我所需要的(看起来确实如此)。
ED:我了解到Ctrl+X可能不是最好的选择,因为它是通往其他 bash 快捷方式的门户,所以我选择了其他东西。
答案1
您可以将以下行添加到~/.inputrc
:
"\C-x": kill-whole-line
或者,将以下内容添加到您的~/.bashrc
:
bind '"\C-x": kill-whole-line'
要查看所有可能的绑定以及哪些绑定有效,请运行
bind -p
您可能需要取消绑定以 开头的组合\C-x
。
答案2
无法直接将多个命令分配给单个热键。通常人们会在~/.inputrc
"\C-x": some-readline-command (eg. kill-whole-line)
但是,您可以执行以下操作将热键映射到任何输入序列(您也可以通过热键引用已绑定的命令,从而执行它们)
"\C-x": "\C-knew text"
笔记:
实际上上面不起作用,因为\C-x
默认情况下绑定为其他绑定的前导键(例如,\C-x\C-u
用于undo
inemacs
模式)。你必须解开所有这些才能让 pure\C-x
做一些事情。