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?

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.


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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.