什么是 Readline 向后删除字符 (Rubout)

什么是 Readline 向后删除字符 (Rubout)

man bash说:

向后删除字符(Routout)

删除光标后面的字符。当给定数字参数时,将删除的文本保存在终止环上。

Rubout只是键盘上的Delete键吗?因为它与bash描述的backward-delete-char具有相同的功能。

但是当我尝试时:

向后杀伤线(Cx Rubout)

向后杀到行首。

考虑以下情况:

$ testa testb testc testd

假设该点位于testc'st,现在我按 Control+x,然后按键盘上的删除键。结果是:

$ testa testb [3~testc testd

我只是无法理解,我错过了什么吗?

答案1

简单的描述中需要明确三个概念:

向后删除字符(Routout)


  • 有一个名为 的键Delete,您在示例中使用了它。
    该键删除“下一个字符”。
    如果该行包含test1并且光标(闪烁的指示器)位于字母上sDelete则将删除s
    相反,有一个名为 的键Backspace,在完全相同的条件下,该键将删除字母e。这就是那封信领先于光标。

    Backspacebash 手册中的“backward-delete-char (Rubout)”描述了该键。

    那个键,显然是“删除光标后面的字符”。

  • 数字参数
    要给它一个“数字参数”,您需要按Alt- 2,例如,这会将 a2作为下一个命令(或键)的参数。

    同样,如果该行中写入了单词 test,并且光标位于 处s,请按Alt- 2,然后按Backspace。那将后退te删除单词 中的两个字符test

  • 杀环。当某些东西被删除时,在大多数情况下,被放置在杀戮环中。
    要获取“杀环”内的内容,请使用ctrl- y

    如果使用alt- 3-删除多个字符,Backspace这些字符将使用ctrl-重新出现y

    详细地:

    如果您使用命令的参数Backspace,您将删除与参数所说的光标当前位置“之前”一样多的字符。

    如果命令提示符下有这个字符串:

    $ testa testb testc
    

    并且光标位于字母“b”下方,一个Alt- 3-Backspace将删除字符“est”:

    $ testa tb testc
    

    这些字符将被打印回来ctrl-y

现在:

向后杀伤线(Cx Rubout)

按下方式:ctrl-x Backspace

这会将整行放置在终止环中“光标之前”。

并且,这些键:ctrl-x Delete没有为它们定义任何操作,这将打印等效的 ANSI 代码:

[3~

在您的终端中。这可以在 bash 使用的 readline 库的 ~/.inputrc 中进行更改。但我相信这超出了这个答案的范围。

相关内容