自动关闭GNU的Readline(Autoclose GNU Readline)

2019-06-26 07:40发布

从事各种基础的Readline-GNU CLI和这将极大地加快了我,如果有办法有括号和引号自动关闭,当你键入。

因此键入'(在击(或其他的CLI)实际上将追加闭引号或托架''()并将光标其间进行写入。

我环顾四周相当长的一段时间,试图找出相关的(比如什么~/.inputrc设置),但没有发现任何东西,我不知道这是在所有实现的。 任何意见,将不胜感激。

Answer 1:

这是一个有点棘手,但可行的。 作为bash命令:

bind '"(" "\C-v()\e[D"'
bind '"\"" "\C-v\"\C-v\"\e[D"'

作为设置.inputrc (因此使用任何程序readline获取行为):

"(": "\C-v()\e[D"
"\"": "\C-v\"\C-v\"\e[D"

您可以前缀使用Control-V的每个关键类型为“普通”引号和左括号不触发自动关闭行为。

上述假定的Emacs键绑定。 对于六个绑定,使用

bind '"(": "\C-v()\ei"'
bind '"\"" "\C-v\"\C-v\"\ei"'

要么

"(": "\C-v()\ei"
 "\"": "\C-v\"\C-v\"\ei"

本质上,只需更换[Di ; 而不是发送转义序列向左移动光标,只需发送\e回落到命令模式将括号/报价后,再重新进入插入模式,应该将光标定位在输入的字母里面。



Answer 2:

正是这样做你想要什么是不可能的,但有一个变通。 把这个在inputrc文件:

"\C-x\"": "\"\"C-b"

跑:

info readline "comm" "readline init" "sample"

整个样品。



文章来源: Autoclose GNU Readline
标签: libreadline