是否可以将多个命令分配给一个热键? (bash、xterm)

是否可以将多个命令分配给一个热键? (bash、xterm)

过去,如果我的光标位于一个很长的 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用于undoinemacs模式)。你必须解开所有这些才能让 pure\C-x做一些事情。

相关内容