示例:我想绑定F12键到命令echo“foobar”,这样每次我点击F12的消息“foobar”将被打印到屏幕。理想情况下,它可以是任何任意shell命令,而不仅仅是内置。怎么会这样?
你可以通过在命令行按Ctrl-v,然后按下你感兴趣的键来确定一个键发出的字符序列。在我的系统上为F12,我得到^ [[24〜。 ^ [表示Esc。不同类型的终端或终端仿真器可以为相同的密钥发射不同的代码。
在Bash提示符下,您可以输入这样的命令来启用键宏,以便您可以尝试它。
bind '"\e[24~":"foobar"'
现在,当你按F12,你会在命令行上获得“foobar”,准备进一步编辑。如果你想要一个键盘立即输入一个命令,你可以添加一个换行符:
bind '"\e[24~":"pwd\n"'
现在,当您按F12时,将显示当前目录,而不必按Enter键。如果你已经在线上键入了某些东西,并且使用这个自动执行了什么?它可能会弄乱。但是,您可以清除该行作为宏的一部分:
bind '"\e[24~":"\C-k \C-upwd\n"'
空格确保Ctrl-u有一些东西要删除,以保持铃声响起。
一旦你已经按照你想要的方式工作,你可以通过将它添加到〜/ .inputrc文件来使它持久化。没有必要使用bind命令或外部的单引号:
"\e[24~":"\C-k \C-upwd\n"
编辑:
您还可以创建一个键绑定,将执行某些东西,而不打扰当前的命令行。
bind -x '"\eW":"who"'
然后,当您键入需要用户名的命令时,例如,您需要知道登录的用户的名称,您可以按Alt-Shift-W,将显示谁的输出,提示将重新发出您的部分命令完整和光标在同一位置的行。