o que é Readline backward-delete-char (Rubout)

2

man bash diz:

backward-delete-char (Rubout)

Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring.

O Rubout é apenas a tecla Delete no teclado? Porque tem a mesma função que o bash descreve backward-delete-char.

Mas quando eu tento:

backward-kill-line (C-x Rubout)

Kill backward to the beginning of the line.

Considere o seguinte caso:

$ testa testb testc testd

suponha que o ponto esteja em testc 's t, agora eu pressiono Control + x e depois pressiono a tecla Delete no teclado. O resultado é:

$ testa testb [3~testc testd

Eu não consigo entender, estou sentindo falta de algo?

    
por Alaneuler 27.02.2017 / 13:37

1 resposta

4

Existem três conceitos a serem esclarecidos na descrição simples de:

backward-delete-char (Rubout)

  • Chaves
    Existe uma chave chamada Delete , que você está usando em seus exemplos.
    Essa chave apaga "o próximo caractere".
    Se a linha contiver test1 e o cursor (o indicador piscante) estiver acima da letra s , Excluir apagará s .
    Em contraste, existe uma chave chamada Backspace , que, exatamente nas mesmas condições, irá apagar a letra e . Essa é a letra que precede o cursor.

    A tecla Backspace está sendo descrita por "backward-delete-char (Rubout)" no manual do bash.

    Essa chave, obviamente, "Exclua o caractere atrás do cursor".

  • Argumento Numérico
    Para dar um "argumento numérico", você precisa pressionar Alt - 2 , por exemplo, que colocará 2 como argumento para o próximo comando (ou chave ).

    Novamente, se a palavra test estiver escrita na linha e o cursor estiver no s , pressione Alt - 2 e, em seguida, o Backspace . Isso irá Voltar apagar dois caracteres, o te na palavra test .

  • O anel de matar. Quando algo é apagado, na maioria dos casos, é colocado em um anel de matar. Para obter o que está dentro do "kill ring" use ctrl - y .

    Se você apagar vários caracteres, com alt - 3 - Backspace , esses caracteres reaparecerão usando ctrl - y .

    Em detalhes:

    Se você usar um argumento para o comando Backspace , você apagará quantos caracteres o argumento disser "antes" da posição atual do cursor.

    Se houver essa string no prompt de comando:

    $ testa testb testc
    

    E o cursor está sob a letra "b", um Alt - 3 - Backspace irá remover os caracteres "est":

    $ testa tb testc
    

    Esses caracteres serão impressos de volta com ctrl - y

Agora, o:

backward-kill-line (C-x Rubout)

Significa pressionar: ctrl - x Backspace

Que colocará a linha inteira "antes do cursor" no anel de killer.

E, as teclas: ctrl - x Excluir não possuem nenhuma ação definida para elas, o que fará com que o código ANSI equivalente seja impresso :

[3~

No seu terminal. Isso poderia ser alterado no ~ / .inputrc para a biblioteca readline que bash use. Mas isso está fora do escopo dessa resposta, acredito.

    
por 27.02.2017 / 22:01