【问题标题】:Autoclose GNU Readline自动关闭 GNU Readline
【发布时间】:2012-07-14 06:21:09
【问题描述】:

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

因此,在 Bash(或其他 CLI)上键入 '( 实际上会 附加右引号或括号 ''() 并放置光标 中间写字。

我已经环顾了很长时间,试图找出任何相关的东西 (例如~/.inputrc 设置),但没有找到任何东西,我想知道这是不是 完全可以实现。任何 cmets 将不胜感激。

【问题讨论】:

    标签: libreadline


    【解决方案1】:

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

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

    运行:

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

    对于整个样本。

    【讨论】:

    • 并非不可能,只是令人费解。
    【解决方案2】:

    这有点棘手,但可行。作为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"
    

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

    【讨论】:

    • 这一切都很好,但是如果我有set editing-mode vi,它会让我在自动完成后退出插入模式,这很烦人。这可以解决吗?
    猜你喜欢
    • 2022-09-23
    • 2010-11-06
    • 2023-04-06
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2023-03-24
    • 2013-08-01
    相关资源
    最近更新 更多