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-argumentMeta-DEL 绑定到函数 backward-kill-wordCtrl-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-argumentCtrl-x Ctrl-r绑定到函数 re-read-init-fileESC[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 文件来使设置的键绑定生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值