gpt4 book ai didi

bash - 在 bash 中,如何将功能键绑定(bind)到命令?

转载 作者:行者123 更新时间:2023-11-29 08:39:14 26 4
gpt4 key购买 nike

示例:我想将 F12 键绑定(bind)到命令 echo "foobar" 这样每次我按下 F12 消息“foob​​ar”将被打印到屏幕上。理想情况下,它可以是任意的 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),它将在不干扰当前命令行的情况下执行某些操作。

bind -x '"\eW":"who"'

然后,当您键入需要用户名的命令时,例如,您需要知道登录用户的名称,您可以按 Alt-Shift-Wwho 的输出将被显示,提示将重新发出,您的部分命令完好无损,光标位于行中的相同位置.

不幸的是,这对于输出超过两个字符的键如 F12 不能正常工作。在某些情况下,这是可以解决的。

命令(在本例中为 who)可以是任何可执行文件 - 程序、脚本或函数。

关于bash - 在 bash 中,如何将功能键绑定(bind)到命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com