Readline Conditional Constructs

readline 实现了一种功能,本质上与 C 预处理器进行条件编译的功能类似, 允许根据测试的结果进行键盘关联和变量设置。其中使用了四种解释器指令。

$if

$if 结构允许根据编辑模式,正在使用的终端,使用 readline 的应用程序来设定按键关联。 测试的文本包括一行,直到行尾;不必用字符来隔离它。

mode

$if 结构的 mode= 形式用于测试 readline 处于 emacs 还是 vi 模式。 这可以与命令 set keymap 结合使用,例如,设置 emacs-standardemacs-ctlx 键盘映射,仅当 readline 以 emacs 模式启动。

term

term= 形式用于包含与终端相关的按键关联,也许是将按键序列输出与终端的功能键相关联。 等号 = 右边的词被同终端的全名和名称中第一个 - 前面的一部分相比较。 例如,允许 sun 同时匹配 sunsun-cmd。

application

application 结构用于包含应用程序相关的设置。每个使用 readline 的程序都设置 application name, 初始化文件可以测试它的值。它可用于将一个按键序列与对特定的程序有用的功能相关联。 例如,下列命令添加了一个按键序列,用以引用 bash 中当前的词或前一个词

$if Bash

Quote the current or previous word

"\C-xq": "\eb\"\ef\""

$endif

$endif

上例中的这个命令,结束了一个 $if 命令。

$else

如果测试失败,$if 指令中这个分支的命令将被执行。

$include

这个指令使用单个文件名作为参数,从文件中读取命令和按键关联。例如,下列指令 将读取 /etc/inputrc

$include /etc/inputrc