Libreadline 自动关闭GNU读线

Libreadline 自动关闭GNU读线,libreadline,Libreadline,在各种基于GNU Readline的CLI上工作,这将大大提高 如果有办法使用括号和引号,请加快速度 键入时自动关闭 因此,在Bash(或其他cli)上键入”或()实际上 附加结束引号或括号'或()并放置光标 中间用于写作 我已经找了很长一段时间,试图找出任何相关的东西 (例如,~/.inputrc设置),但没有找到任何内容,我想知道这是否正确 完全可以实现。如果您有任何意见,我们将不胜感激。完全按照您的意愿去做是不可能的,但是有一个解决办法。 把这个放在inputrc中: "\C-x\"":

在各种基于GNU Readline的CLI上工作,这将大大提高 如果有办法使用括号和引号,请加快速度 键入时自动关闭

因此,在Bash(或其他cli)上键入
)实际上 附加结束引号或括号
'
()
并放置光标 中间用于写作

我已经找了很长一段时间,试图找出任何相关的东西 (例如,
~/.inputrc
设置),但没有找到任何内容,我想知道这是否正确
完全可以实现。如果您有任何意见,我们将不胜感激。

完全按照您的意愿去做是不可能的,但是有一个解决办法。 把这个放在inputrc中:

"\C-x\"": "\"\"C-b"
运行:


对于整个示例。

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

bind '"(" "\C-v()\e[D"'
bind '"\"" "\C-v\"\C-v\"\e[D"'
作为
.inputrc
中的设置(因此任何使用
readline
的程序都会获得该行为):

您可以在每个键前面加上Control-v以键入“普通”引号和左括号,而不触发自动关闭行为

以上假设Emacs键绑定

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


本质上,只需替换
[D
i
;不发送转义序列以向左移动光标,只需在插入括号/引号后发送
\e
以返回到命令模式,然后重新进入插入模式,该模式应将光标定位在刚键入的字符内。

不是不可能的,只是迂回。这很好,但如果我ave
设置编辑模式vi
,自动完成后会使我退出插入模式,这很烦人。这可以解决吗?
"(": "\C-v()\e[D"
"\"": "\C-v\"\C-v\"\e[D"
bind '"(": "\C-v()\ei"'
bind '"\"" "\C-v\"\C-v\"\ei"'
"(": "\C-v()\ei"
 "\"": "\C-v\"\C-v\"\ei"