Gong Yong的Blog

在Linux的.inputrc文件中创建宏快捷键和函数快捷键

Readline还提供了自定义快捷的方式,你可以在home下的.inputrc文件中创建自定义快捷键。

自定义的快捷键有两种类型:

  1. 函数

你可以创建一个快捷键,它执行的时候会在光标的当前位置插入一串字符。在.inputrc文件(如果文件不存在则创建一个)中以以下格式输入一行字符。

<key combination>: "<string of characters>"

例如,如果我经常需要重定向输出到~/debug_output.txt。我可以在.inputrc中定义一个宏:

Control-g: " > ~/debug_output.txt"

现在只要我输入组合键Control-g,这个重定向语句就会被添加到我的光标后面。

当你创建宏的时候记住下面几点:

函数

你还可以创建一个快捷键调用一个函数。Readline提供了很多提前定义好可供选择的函数。将一个快捷键映射到函数的格式为:

<key combination>: <function-name>

GNU的Readline手册中有一个可用的预定义函数的列表。

你也可以自定义函数,不过这需要用C语言来写,这不是本教程所要介绍的东西,也许以后会写一篇专门介绍这方面内容的教程。

有一个非常有用的预定义函数——菜单补全(menu-complete),它提供了另外一种自动补全方式。

默认的自动补全方式(使用TAB键)是:

菜单补全会循环输出匹配的结果,每次函数调用的时候会输出下一个匹配项。这种补全方式有时候会很有用,特别是在自动补全长文件名的时候。在下面的语句添加到.inputrc中可以将TAB键映射到这种补全方式。

TAB: menu-complete

注意当你在.inputrc文件中添加了这条语句后,并不会在当前shell中马上生效,你需要重新创建一个shell实例来加载新的.inputrc。

在这篇文章中我们了解到Linux命令行的快捷键都是Readline定义的。快捷键有两种类型:

Readline提供了一系列的默认快捷键,同时也提供了在.inputrc自定义快捷键的方法。最后我们可以使用下面的命令查看所有的快捷键:

bind -p