Linux

什麼是 Readline 向後刪除字元(Rubout)

  • February 27, 2017

man bash說:

向後刪除字元(Rubout)

刪除游標後面的字元。當給定一個數字參數時,將刪除的文本保存在 kill ring 上。

Rubout只是鍵盤上的Delete鍵嗎?因為它與bash 描述的backward-delete-char 具有相同的功能。

但是當我嘗試時:

後退殺線(Cx Rubout)

向後殺到行首。

考慮以下情況:

$ testa testb testc testd

假設點在testc‘st,現在我按 Control+x 然後按鍵盤上的 Delete 鍵。結果是:

$ testa testb [3~testc testd

我只是無法理解它,我錯過了什麼嗎?

在簡單的描述中需要澄清三個概念:

向後刪除字元(Rubout)

有一個名為 的鍵Delete,您在範例中使用它。

該鍵擦除“下一個字元”。

如果該行包含test1並且游標(閃爍的指示器)在字母上方sDelete將擦除s

相比之下,有一個名為 的鍵Backspace,它在完全相同的條件下會擦除字母e。那是游標 之前的字母。

Backspacebash 手冊中的“backward-delete-char (Rubout)”描述了該鍵。

那個鍵,顯然是“刪除游標後面的字元”。

  • 數字參數

要給它一個“數字參數”,您需要按Alt- 2,例如,它將 a2作為下一個命令(或鍵)的參數。

同樣,如果在該行中寫入單詞 test,並且游標位於s,請按Alt- 2,然後按Backspace。這將Back擦除te單詞中的兩個字元test

  • 殺戒。當某些東西被擦除時,在大多數情況下,它會被放置在一個殺戮環中。

要獲取“殺戮戒指”內的內容,請使用ctrl- y

如果您使用alt- 3-擦除多個字元Backspace,這些字元將使用ctrl-重新出現y

詳細地:

如果您使用 command 的參數Backspace,您將擦除與參數所說的游標目前位置“之前”一樣多的字元。

如果命令提示符下有此字元串:

$ testa testb testc

並且游標在字母“b”下,一個Alt- 3-Backspace將刪除字元“est”:

$ testa tb testc

這些字元將列印回來ctrl-y

現在:

後退殺線(Cx Rubout)

按壓方式:ctrl-x Backspace

這會將整行“游標之前”放置在殺傷環中。

並且,這些鍵:ctrl-x Delete沒有為它們定義任何操作,這將列印等效的 ANSI 程式碼:

[3~

在您的終端中。這可以在 ~/.inputrc 中更改 bash 使用的 readline 庫。但我相信,這超出了這個答案的範圍。

引用自:https://unix.stackexchange.com/questions/347882