readline手册
INITIALIZATION FILE
Readline 通过一个初始化文件(即 inputrc 文件)中命令进行个性化定制。此文件的名称取自 INPUTRC 环境变量的值。如果环境变量 INPUTRC 未设置,则默认值为 ~/.inputrc
。如果该文件不存在或无法读取,则最终默认值为 /etc/inputrc
。当使用 readline 库的程序启动时,将读取 readline 的初始化文件,并设置键绑定和变量。readline 的初始化文件中只涉及几个基本结构:空行会被忽略;以 #
开头的行是注释;以 $
开头的行表示条件结构。其他行表示键绑定和变量设置。使用此库的每个程序都可以添加自己的命令和绑定。
例如,将
M-Control-u: universal-argument
or
C-Meta-u: universal-argument
放置在 inputrc 中将使得按下 M-C-u 时执行 readline 命令universal-argument
。
设置键绑定时,可以识别以下符号字符名(symbolic character names):DEL、ESC、ESCAPE、LFD、NEWLINE、RET、RETURN、RUBOUT、SPACE、SPC和TAB。
除了命令名之外,readline 还允许将键绑定到字符串(即 宏(macro)),该字符串在按键被按下时会填充到终端。
Key Bindings
在 inputrc 文件中控制键绑定的语法很简单。所需的只是命令的名称或宏的文本以及应该绑定到的按键。按键可以通过以下两种方式之一指定:1. 键名(keyname),可能带有Meta或Control前缀;2. 键序列(keyseq)。命令和按键由冒号分隔。按键(包括keyname方式和keyseq方式)和冒号之间不能有空格。
方式一:keyname
用法:
keyname:function name
或
keyname:function macro
其中,keyname是用英语拼写的按键的名称。
例子:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
在上面的示例中,Ctrl-u绑定到函数 universal-argument
,Meta-DEL 绑定到函数 backward-kill-word
,Ctrl-o绑定到冒号右边的宏表达式(即,将 "> output"
填充到命令行)。
方式二:keyseq
用法:
"keyseq":function name
或
"keyseq":function macro
其中,keyseq 与上面的 keyname 不同。按键通过将键序列放在双引号中来指定。可以使用一些 GNU Emacs 风格的按键转义符,如以下示例中所示,但无法识别符号字符名。
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
在本例中,Ctrl-u再次绑定到universal-argument
。Ctrl-x Ctrl-r绑定到函数 re-read-init-file
,ESC[11~
绑定到宏文本 "Function Key 1"
。
指定按键时,可以使用一整套 GNU Emacs 样式的转义序列:
\C-
control 前缀\M-
meta 前缀\e
ESC 字符\\
反斜杠\"
一个双引号\'
一个单引号
除了 GNU Emacs 样式的转义序列之外,还提供了第二组反斜杠转义:
\a
警报(铃声)\b
退格\d
删除\f
换页\n
换行\r
回车\t
水平制表符\v
垂直制表符\nnn
值为八进制值nnn(一到三个数字)的八位字符\xHH
值为十六进制值HH(一个或两个十六进制数字)的八位字符
输入宏的文本时,应使用单引号或双引号来指示宏定义。不带引号的文本被假定为函数名。在宏中,将展开上述反斜杠转义。反斜杠将转义宏文本中的任何字符,包括 "
和 '
。
Bash 允许使用 bind 命令显示或修改当前的 readline 键绑定。通过在 set 命令中使用 -o 选项,可以在交互使用期间切换编辑模式。使用 readline 库的其他程序提供类似的机制。如果程序不提供设置或修改键绑定的方式,则可以通过编辑 inputrc 文件设置键绑定,并重新加载 inputrc 文件来使设置的键绑定生效。