Chave de escape do shell do Windows (excluir linha inteira) equivalente no Bash

13

Na linha de comando do Windows (powershell e cmd), quando você pressiona a tecla Esc enquanto estiver em uma linha, o que quer que tenha sido digitado no prompt é removido.

Descobri que pressionar Esc key no prompt bash não faz nada. Pressionar Esc e, em seguida, backspace exclui uma palavra, mas isso precisa ser feito para cada palavra.

Estou aprendendo Bash incrementalmente e às vezes digito algo estúpido no meio da linha e sinto que é melhor digitar do zero novamente. Para fazer isso, pressionar backspace é a única maneira que encontrei até agora.

O que você faz?

Estou ciente do comando clear e do atalho Ctrl-L , mas não estou falando de limpar todo o terminal. Apenas a linha.

    
por Animesh 06.02.2012 / 06:42

4 respostas

15

Você deseja kill-whole-line , mas isso não é vinculado por padrão no bash. backward-kill-line ( Ctrl X Backspace ) e unix-line-discard ( Ctrl U ) apaga do ponto atual para o começo da linha, então vá para o final da linha e use um dos dois.

    
por 06.02.2012 / 07:27
13

Você poderia usar Ctrl + C para abandonar o que estava digitando e obter uma nova linha de comando vazia, veja É incorrecta a CTRL + C para voltar à linha de comandos? .

    
por 06.02.2012 / 07:47
6

A tecla Ctrl + a vai para o começo da linha e Ctrl + k é apagada até o final da linha

    
por 06.02.2012 / 19:40
3

Para expandir um pouco a resposta de Ignacio Vazquez-Abrams, você pode obter um comportamento semelhante ao do Windows a partir da tecla Esc no bash ligando o kill-whole-line ao Esc com o seguinte comando

bind '"\e":kill-whole-line'

Se você adicionar a linha ao seu arquivo ~/.inputrc , a ligação persistirá entre as sessões.

Note, no entanto, que isso é muito não padrão, já que o bash realmente usa a tecla Esc como outra tecla de modificação (como uma não-persistente Alt ou Ctrl) . Se você observar a lista de associações de teclas existentes (com bind -P ), provavelmente verá vários comandos associados a combinações de teclas que começam com "\ e" (por exemplo,

"\eb": backward-word

que configura a combinação Esc + B para mover o cursor de volta para o início de palavra mais recente - e não como Ctrl + < kbd> ← , exceto que você tem que continuar liberando Esc (assim como B , é claro) se você quiser fazer isso mais de uma vez em um linha).

E isso explica porque eu disse que o comportamento que você tem é quase semelhante ao Windows: quando você pressiona Esc , o bash verifica se você está usando combinação com outra chave; Então, se você ligá-lo a kill-whole-line , há um pequeno atraso entre pressionar (ou liberar) Esc e liberar a linha para você.

No entanto, se você não se importa com nada disso, e prefere viver com o atraso do que se recomprar a uma tecla diferente, isso pode ser feito.

(Nota: muitas das informações aqui obtidas como resultado da leitura - e seguindo os links em - esta resposta .)

    
por 23.09.2014 / 22:08