Bash: elimina dal cursore fino alla fine della riga con una scorciatoia da tastiera


91

Considera il seguente prompt di bash, dove ^indica la posizione del prompt:

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

Supponiamo che io voglia impegnarmi nuovamente con lo stesso bug, con un messaggio di commit diverso. C'è un modo per eliminare il testo dalla posizione del cursore fino alla fine della riga?

Risposte:


145

Utilizzare Ctrl+ Kper eliminare dal cursore alla fine della riga.

Usa Ctrl+ Uper cancellare dal cursore all'inizio della riga.


Qual è la combinazione di tasti da mettere?
ShooShoSha,

@ShooShoSha, Try Shift + Insert
user128285

quali sono i significati di K e U, non posso ricordare questo la prossima settimana se non conosco i significati, come ricordarli?
workplaylifecycle

2
@hylepo Non so, ma il mio mnemonico è Brexit - the UK leaves Europe- U cancella all'inizio e K fino alla fine.
Snowcrash,

47

Dipende se stai usando la modalità di modifica vi ( set -o vi) o emacs ( set -o emacs) all'interno della tua shell.

Per impostazione predefinita, la shell in genere utilizza la modalità di modifica di emacs.

  • In modalità emacs, l'eliminazione fino alla fine della riga può essere effettuata usando il comando ctrl- k.

  • Se, tuttavia, ti capita di usare la modalità di modifica vi nella tua shell dei comandi, lo stesso risultato può essere ottenuto digitando Esc(che ti metterà in modalità di comando) seguito da d- $(se vuoi eliminare l'intera riga, inserisci dd).

Se non si è sicuri della modalità di modifica attualmente in uso nella shell, immettere il comando set -odalla riga di comando e sarà possibile determinare la modalità di modifica attualmente in uso:

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

Per cambiare la modalità di modifica della riga di comando, digita semplicemente:

set -o vi

o

set -o emacs

4
Se vuoi un mnemonico, Ksta per kill (la linea che parte dalla posizione del cursore).
Gregor Botero,

5
Nella modalità di comando vi, Dfunziona comed$
glenn jackman

3
+1 per aver effettivamente scritto la risposta giusta e aver spiegato che le shellopts potrebbero cambiarla.
TC1

1
>> Grazie. Sembra che sto usando vi, quindi CTRL + K fa il trucco. - Adam Matan Adam, allora sei in modalità emacs, non vi.
catch22

1
In Kubuntu oneiric (konsole), Ctrl + K e ESC Shift + D funzionano entrambi. ESC d cancella parte della linea (forse fino a un ';'). (Digitando $ dopo che si invia solo $ alla console.) Ho cercato di capire come farlo per un bel po '. Grazie!
Joe,

3

Nel caso in cui tu abbia familiarità solo con uno di Zsh e Bash, ecco le combinazioni di tasti equivalenti che potresti (potresti) avere bisogno:

bash

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

zsh

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

altre informazioni rilevanti

Per ottenere un elenco di combinazioni di tasti:

# bash
bind -p

# zsh
bindkey

Non ho capito bene. Per Bash, non dovrebbe essere "^k" per Control + K?
wjandrea,

Scusa, questo è il mio legame personale. Avrei messo il binding predefinito ma non mi sentivo a mio agio con la sintassi bash. Da quando hai menzionato quello che dovrebbe essere, ho preso la tua parola e modificato il mio post.
Sridhar Sarnobat,

1
Oh va bene. Non ho familiarità con me stesso, ma ho appena controllato e dovrebbe essere"\C-k"
wjandrea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.