3

使用各种基于 GNU Readline 的 CLI,如果有一种方法可以在您键入时自动关闭括号和引号,这将大大加快我的速度。

因此,在 Bash(或其他 CLI)上键入'(实际上会附加右引号或括号'',或者()将光标放在两者之间以进行书写。

我环顾四周,试图找出任何相关的东西(例如~/.inputrc设置),但没有找到任何东西,我想知道这是否可以实现。任何意见将不胜感激。

4

2 回答 2

3

这有点棘手,但可行。作为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 键绑定。对于 vi 绑定,使用

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

或者

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

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

于 2012-07-26T02:54:47.400 回答
0

完全按照自己的意愿去做是不可能的,但是有一种解决方法。把它放在 inputrc 中:

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

跑:

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

对于整个样本。

于 2012-07-25T16:10:29.660 回答