在 .intputrc 文件中创建 Linux 宏和函数键绑定
Readline 还使您能够通过编辑主目录中的 .inputrc 配置文件来映射您自己的自定义键绑定。
以下是您可以定义的两种类型的自定义键绑定:
- 宏
- 功能
宏
您可以定义一个键绑定,当执行该键绑定时,将在光标的当前位置填充一串字符。为此,请在 .inputrc 配置文件中添加以下格式的行(如果该文件尚不存在,则创建该文件):
<key combination>: "<string of characters>"
例如,假设我发现自己反复将输出重定向到文件“~/debug_output.txt”。我可以通过添加以下行在我的 .inputrc 中定义一个宏:
Control-g: " > ~/debug_output.txt"
现在,每当我键入组合键 Control-g 时,重定向语句将添加到我的光标之后,让我可以轻松地将其附加到其他命令的末尾。
创建宏时请记住以下几点:
- 我可以用英语拼出组合键(有关更多信息,请参阅 bash 的手册页。搜索“Readline Key Bindings”部分)
- 宏要插入的字符序列必须用双引号 (“)
- Control-g 的选择是任意的,您可以选择对您更有意义的组合。
- 可以覆盖默认键绑定(定义自己的键时请记住这一点)
- 要使键绑定生效,您必须启动一个新的 shell 实例(在 shell 启动时读取 .inputrc 配置文件)
功能
您还可以创建一个键绑定,该绑定将在执行时调用一个函数。Readline 提供了大量的预定义函数可供选择。要将组合键映射到预定义的功能:
<key combination>: <function-name>
有关可用预定义函数的列表,请参阅GNU Readline 手册。
也可以定义您自己的自定义函数,但这需要用 C 语言编写它们,并且超出了本教程的范围。稍后我们可能会将其作为单独的教程进行介绍。
一个有用的预定义功能是菜单完成。它提供了另一种自动完成行为。
自动完成(映射到 TAB 键)的默认行为是:
- 如果存在单个匹配项,则填写部分命令/目录/文件名
- 当存在超过 1 个时显示可能匹配项的列表
menu-complete 将在可能的匹配列表中循环,在每次调用函数时填充下一个可能的匹配。这种行为可能很好,尤其是在自动完成较长的文件名时。要重新映射 TAB 键以使用此行为,请将以下行添加到您的 .inputrc 文件中。
TAB: menu-complete
注意这个新的键绑定不会在当前的shell中生效,你必须启动一个新的实例来重新加载.inputrc配置文件
在本教程中,我们了解到 Linux 命令行键绑定由名为 Readline 的工具提供支持。键绑定可以是以下两种类型中的一种:
- 宏:扩展字符序列
- 功能:执行一个动作
Readline 为我们提供了一组默认键绑定,但也为我们提供了在 .inputrc 配置文件中创建自己的灵活性。最后,要查看所有当前的键绑定,我们可以使用“绑定”命令。
bind -p
- 点赞
- 收藏
- 关注作者
评论(0)