Como limpo / excluo a linha atual no terminal?

795

Se eu estiver usando o terminal e digitando uma linha de texto para um comando, existe uma tecla de atalho ou alguma maneira de limpar / excluir essa linha?

Por exemplo, se minha linha / comando atual é algo muito longo como:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

Existe uma tecla de atalho ou comando para ir do acima para:

>

?

Normalmente, pressionarei a tecla e, se minha linha atual for uma nova na história, isso a limpará. Mas se eu estiver passando pelo meu histórico de comandos por meio da tecla e começar a editar ou usar esses comandos, apenas alterará o prompt para o próximo comando mais recente do histórico, para que não funcione aqui, a menos que eu pressione várias vezes.

tríade
fonte
6
Atalhos para mover mais rápido na linha de comando Bash Esta página é mais ilustrativo e explica melhor eu acho
Gab是好人
1
Possível duplicata do In bash, como limpar a entrada atual?
Cas

Respostas:

1493

Você pode usar Ctrl+ Upara esclarecer até o início.

Você pode usar Ctrl+ Wpara excluir apenas uma palavra.

Você também pode usar Ctrl+ Cpara cancelar.

Se você quiser manter o histórico, use Alt+ Shift+ #para fazer um comentário.


Folha de Dicas do Modo de Edição do Bash Emacs

kev
fonte
231
A linha excluída por Ctrl-U também pode ser recuperada com Ctrl-Y.
keks
65
Que? Tão legal obrigado keks & kev, ⌃ + U é excluir tudo antes do Cursor, ⌃ + K é excluir tudo depois do Cursor, ⌃ + A é ir para o início da linha. Então, tecnicamente ^ + C é a melhor solução para a questão
Binarian
3
Alt-Shift- # não funciona? pensei que os outros fazem. Alt + Shift + # imprime um caractere> no terminal
tgkprog
49
Voto positivo por me ensinar a <kbd>...</kbd>tag para mostrar as chaves no SO.
Samveen
11
@ LưuVĩnhPhúc ESCé sua própria chave modificadora no bash. É usado para cancelar a navegação no histórico ( CTRL+ r) ou trocar as duas últimas palavras atrás do cursor ( ESC+ t).
noobish
578

Apenas para resumir todas as respostas:

  • Limpar a linha: você pode usar Ctrl+ Upara limpar o início.
  • Limpe a linha: Ctrl+ E Ctrl+ Upara limpar a linha atual no terminal
  • Limpe a linha: Ctrl+ A Ctrl+ Kpara limpar a linha atual no terminal
  • Cancele o comando / linha atual: Ctrl+ C.
  • Lembre-se do comando excluído: Ctrl+ Y(then Alt+ Y)
  • Ir para o início da linha: Ctrl+A
  • Ir para o final da linha: Ctrl+E
  • Remova as palavras para a frente, por exemplo, se você estiver meio do comando: Ctrl+K
  • Remover caracteres do lado esquerdo, até o início da palavra: Ctrl+W
  • Para limpar prompt de seu comando inteiro: Ctrl+L
  • Alternar entre o início de linha e posição actual do cursor: Ctrl+XX
J4cK
fonte
6
note que ctrl-k exclui tudo entre o cursor e o final da linha.
Peter Berg
6
Remova a próxima palavra:Alt + D
cnlevy
1
Alt+ D Não funciona é por isso que eu não incluí-lo :(
J4cK
1
CTRL + Llimpa a tela, mas mantém o que foi digitado na linha de comando atual.
Aziraphale
1
Ctrl + Alt + >move para o final do histórico de entrada, o que é perfeito quando você deseja cancelar a pesquisa no histórico.
astasiak
165

Eu tenho a lista completa de atalhos:

  1. Ctrl+ a Mova o cursor para o início da linha
  2. Ctrl+ e Mova o cursor para o final da linha
  3. Ctrl+ b Voltar um caractere
  4. Alt+ b Voltar uma palavra
  5. Ctrl+ f Avançar um caractere
  6. Alt+ f Avançar uma palavra
  7. Ctrl+ d Excluir caractere atual
  8. Ctrl+ w Cortar a última palavra
  9. Ctrl+ k Cortar tudo depois do cursor
  10. Alt+ d Cortar palavra após o cursor
  11. Alt+ w Cortar palavra antes do cursor
  12. Ctrl+ y Cole o último comando excluído
  13. Ctrl+ _ Desfazer
  14. Ctrl+ u Cortar tudo antes do cursor
  15. Ctrl+ xxAlterna entre a primeira e a posição atual
  16. Ctrl+ l Limpe o terminal
  17. Ctrl+ c Cancele o comando
  18. Ctrl+ r Comando Pesquisar no histórico - digite o termo de pesquisa
  19. Ctrl+ j Finalize a pesquisa na entrada do histórico atual
  20. Ctrl+ g Cancele a pesquisa e restaure a linha original
  21. Ctrl+ n Próximo comando do Histórico
  22. Ctrl+ p comando anterior do Histórico
tharunkumar
fonte
5
Desculpe, mas forneci todas as teclas de atalho úteis, nas quais 7,8,9,10,11,14,16,17 são as teclas de atalho para limpar / excluir que podemos usar conforme a necessidade.
Tharunkumar # 24/16
2
Deve-se mencionar que CTRL+ L(16.) preserva o conteúdo da linha de comando atual.
Aziraphale
em janelas parece que você precisa usar Ctrl + Shift + A para ir para o início da linha
Gandalf458
3
Está faltando Ctrl+ h: apagar o carácter antes do cursor
peflorencio
22

Ctrl+ A, Ctrl+ Kpara limpar a linha atual no terminal. Você pode recuperá-lo com Ctrl+ Yse precisar.

Spyros Mandekis
fonte
16

ou se você estiver usando o modo vi, pressione Escseguido decc

para recuperar o que você acabou de apagar Esce depois p:)

bluTaz
fonte
5
Você pode ativar o modo vi por echo 'set editing-mode vi' >> ~/.inputrc. Também funciona em lugares como prompts interpretador Python e alguns clientes SQL
dwurf
11

Não tenho certeza se você o ama, mas eu uso Ctrl+ A(para começar a linha) e Ctrl+ K(para excluir a linha). Eu estava familiarizado com esses comandos do emacs e os descobri acidentalmente.

Muhammet Can
fonte
10

Uma alternativa para Ctrl+ A, Ctrl+ Ké Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
fonte
6
  • Ctrl+ u: move para o início da sua linha para um buffer de toque
  • Ctrl+ k: move até o final da sua linha para um buffer de toque
  • Ctrl+ w: move caracteres e (várias) palavras restantes do cursor para um buffer de toque

  • Ctrl+ y: insira a última entrada do seu buffer de toque e, em seguida, você pode usar Alt+ ypara girar pelo seu buffer de toque. Pressione várias vezes para continuar na entrada "anterior" no buffer de toque.

Cyrus
fonte
4

CTRL+ Re comece a digitar para procurar comandos anteriores no histórico. Mostrará linhas completas.
CTRL+ Rnovamente para alternar.

Daniel
fonte
2

Ctrl + W limpará a palavra à esquerda.

Bendangelo
fonte
2

Adicione à lista:

No modo Emacs, pressionar Esc, seguido de Rexcluirá a linha inteira.

Eu não sei por que, apenas acontece de encontrá-lo. Talvez não seja usado para excluir a linha, mas tenha o mesmo efeito. Se alguém souber, por favor me diga, obrigado :)

Funciona no Bash, mas não funciona no Fish.

PickBoy
fonte
1
É o revert-linecomando readline: "Desfazer todas as alterações feitas nesta linha". Por padrão, está vinculado a M-r(Meta-R), que pode ser Alt-R ou Esc R. Isso significa que na verdade não está excluindo a linha, apenas quando estava vazia; se você rolar de volta no histórico de comandos e alterar um comando, emita o problema revert-line; ele voltará ao comando original e não excluirá a linha.
Benjamin W.
2

Para excluir a linha inteira, não importa onde esteja o cursor, você pode usar o kill-whole-linecomando, mas ele é ilimitado por padrão. Ele pode ser vinculado a, por exemplo, Ctrl+ Alt+ Kinserindo

"\e\C-k": kill-whole-line

no arquivo init do Readline (convencionalmente ~/.inputrc).

Várias observações:

  • Para evitar reatribuir acidentalmente uma sequência de teclas que já está em uso para outra coisa, você pode verificar todas as suas ligações com bind -P. Verifique a ligação sugerida com

    bind -P | grep '\\e\\C-k'
  • O nome do arquivo init do Readline é obtido da variável shell INPUTRC. Se não estiver definido, o padrão é ~/.inputrc, ou (se isso não existir) /etc/inputrc. Observe que se você tiver ~/.inputrc, /etc/inputrcserá ignorado.
  • Para recarregar seu arquivo init do Readline, você pode usar Ctrl+ X Ctrl+ R.
  • Links para seções relevantes do manual:
Benjamin W.
fonte
2

Para limpar toda a linha (2 maneiras diferentes):

  • Home, Ctrl+K
  • End, Ctrl+U
Jose1755
fonte
0

Alt+ #comenta a linha atual. Ele estará disponível no histórico, se necessário.

salmão mate
fonte