Bash: excluir do cursor até o final da linha com um atalho de teclado

91

Considere o seguinte prompt do bash, onde ^denota o local do prompt:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

Suponha que eu queira confirmar novamente o mesmo bug, com uma mensagem de confirmação diferente. Existe uma maneira de excluir o texto da posição do cursor até o final da linha?

Adam Matan
fonte

Respostas:

145

Use Ctrl+ Kpara excluir do cursor até o final da linha.

Use Ctrl+ Upara excluir do cursor até o início da linha.

user128285
fonte
Qual é a combinação de teclas a colocar?
ShooShoSha
@ShooShoSha, Tente Shift + Insert
user128285
quais são os significados de K e U, não me lembro dessa semana que vem se não souber os significados, como lembrá-los?
workplaylifecycle
2
@ hylepo Não sei, mas meu mnemônico é Brexit - the UK leaves Europe: U exclui para o início e K até o fim.
Snowcrash
47

Depende se você está usando o modo de edição vi ( set -o vi) ou emacs ( set -o emacs) dentro do seu shell.

Por padrão, seu shell geralmente usa como padrão o modo de edição do emacs.

  • No modo emacs, a exclusão para o final da linha pode ser realizada usando o comando ctrl- k.

  • Se, no entanto, você estiver usando o modo de edição vi em seu shell de comando, o mesmo resultado poderá ser obtido digitando Esc(o que o colocará no modo de comando) seguido por d- $(se você deseja excluir a linha inteira, insira dd).

Se você não souber ao certo qual modo de edição está usando no shell, insira o comando set -ona linha de comando e poderá determinar qual modo de edição está usando:

set -o
...snip...
emacs           on
...snip...
vi              off

Para alternar o modo de edição da linha de comando, basta digitar:

set -o vi

ou

set -o emacs
Kevin Bowen
fonte
4
Se você quer um mnemônico, Ksignifica kill (a linha que começa na posição do cursor).
Gregor Botero
5
No modo de comando vi, Dfunciona da mesma forma qued$
glenn jackman 17/03/2013
3
+1 por escrever a resposta certa e explicar que os shellopts podem alterá-la.
TC1
1
>> Obrigado. Parece que estou usando vi, então CTRL + K faz o truque. - Adam Matan Adam, então você está no modo emacs, não no vi.
catch22
1
No Kubuntu onírico (konsole), Ctrl + K e ESC Shift + D funcionam. ESC d exclui parte da linha (talvez até um ';'). (Digitar um $ depois disso envia o $ para o console.) Estou tentando descobrir como fazer isso há algum tempo. Obrigado!
31513 Joe Joe
3

Caso você esteja familiarizado apenas com um dos Zsh e Bash, aqui estão as combinações de teclas equivalentes de que você pode precisar:

bater

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

outra informação relevante

Para obter uma lista de combinações de teclas:

# bash
bind -p

# zsh
bindkey
Sridhar Sarnobat
fonte
Estou confuso. Para Bash, não deveria ser "^k" para Control + K?
Wjandrea
Desculpe, essa é a minha ligação pessoal. Eu teria colocado a ligação padrão, mas não estava confortável com a sintaxe do bash. Desde que você mencionou o que deveria ser, tomei sua palavra e editei meu post.
Sridhar Sarnobat
1
Ah ok. Eu não estou familiarizado com ele mesmo, mas apenas verificado e deve ser"\C-k"
wjandrea