在 .intputrc 文件中创建 Linux 宏和函数键绑定

举报
Tiamo_T 发表于 2022/09/12 23:38:03 2022/09/12
【摘要】 Readline 还使您能够通过编辑主目录中的 .inputrc 配置文件来映射您自己的自定义键绑定

Readline 还使您能够通过编辑主目录中的 .inputrc 配置文件来映射您自己的自定义键绑定。

以下是您可以定义的两种类型的自定义键绑定:

  1. 功能

您可以定义一个键绑定,当执行该键绑​​定时,将在光标的当前位置填充一串字符。为此,请在 .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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。