Come posso cancellare / cancellare la linea corrente nel terminale?


795

Se sto usando un terminale e sto digitando una riga di testo per un comando, esiste un tasto di scelta rapida o un modo per cancellare / eliminare quella riga?

Ad esempio, se la mia riga / comando corrente è qualcosa di molto lungo come:

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

Esiste un tasto di scelta rapida o un comando per passare da sopra a:

>

?

Di solito premerò il tasto, e se la mia linea attuale è nuova di zecca nella storia, questo lo cancellerà. Ma se sto esaminando la cronologia dei miei comandi tramite il tasto e comincio a modificare o utilizzare quei comandi, cambierò solo il prompt al prossimo comando più recente nella cronologia, quindi non funziona qui a meno che non prema più volte.


6
Scorciatoie per spostarsi più velocemente nella riga di comando di Bash Questa pagina è più illustrativa e spiega meglio penso
Gab 是 好人


Risposte:


1493

Puoi usare Ctrl+ Uper cancellare fino all'inizio.

Puoi usare Ctrl+ Wper cancellare solo una parola.

Puoi anche usare Ctrl+ Cper annullare.

Se vuoi conservare la cronologia, puoi usare Alt+ Shift+ #per renderla un commento.


Foglio informativo sulla modalità di modifica di Bash Emacs


231
La linea cancellata da Ctrl-U è richiamabile anche con Ctrl-Y.
keks

65
Wut? Quindi fico grazie keks & kev, ⌃ + U viene eliminato tutto prima del cursore, ⌃ + K viene eliminato tutto dopo il cursore, ⌃ + A per andare all'inizio della riga. Quindi tecnicamente ⌃ + C è la soluzione migliore per la domanda
Binarian

3
Alt-Shift- # non funziona? pensavano gli altri. Alt-Shift- # stampa un carattere> sul terminale
tgkprog,

49
Eseguito l'upgrade per insegnarmi <kbd>...</kbd>tag per mostrare le chiavi in ​​SO.
Samveen,

11
@ LưuVĩnhPhúc ESCè la sua chiave modificatrice in bash. È usato per cose come cancellare la navigazione della cronologia ( CTRL+ r) o scambiare le ultime due parole dietro il cursore ( ESC+ t).
noobish,

578

Solo per riassumere tutte le risposte:

  • Pulisci la linea: puoi usare Ctrl+ Uper cancellare fino all'inizio.
  • Pulisci la linea: Ctrl+ E Ctrl+ Uper cancellare la linea corrente nel terminale
  • Pulisci la linea: Ctrl+ A Ctrl+ Kper cancellare la linea corrente nel terminale
  • Annulla il comando / riga corrente: Ctrl+ C.
  • Richiama il comando cancellato: Ctrl+ Y(quindi Alt+ Y)
  • Vai all'inizio della riga: Ctrl+A
  • Vai alla fine della riga: Ctrl+E
  • Rimuovi le parole in avanti, ad esempio, se sei al centro del comando: Ctrl+K
  • Rimuovi i caratteri a sinistra, fino all'inizio della parola: Ctrl+W
  • Per cancellare l'intero prompt dei comandi: Ctrl+L
  • Alterna tra l'inizio della riga e la posizione corrente del cursore: Ctrl+XX

6
nota ctrl-k cancella tutto tra il cursore e la fine della linea.
Peter Berg,

6
Rimuovi la parola successiva:Alt + D
cnlevy,

1
Alt+ D non funziona, ecco perché non l'ho incluso :(
J4cK,

1
CTRL + Lcancella lo schermo ma mantiene ciò che è stato digitato nella riga di comando corrente.
Aziraphale,

1
Ctrl + Alt + >si sposta alla fine della cronologia di input che è perfetta quando si desidera annullare la ricerca della cronologia.
Astasiak,

165

Ho l'elenco completo delle scorciatoie:

  1. Ctrl+ a Sposta il cursore per iniziare la riga
  2. Ctrl+ e Sposta il cursore alla fine della riga
  3. Ctrl+ b Torna indietro di un carattere
  4. Alt+ b Indietro di una parola
  5. Ctrl+ f Sposta in avanti di un carattere
  6. Alt+ f Sposta in avanti di una parola
  7. Ctrl+ d Elimina carattere corrente
  8. Ctrl+ w Taglia l'ultima parola
  9. Ctrl+ k Taglia tutto dopo il cursore
  10. Alt+ d Taglia la parola dopo il cursore
  11. Alt+ w Taglia la parola prima del cursore
  12. Ctrl+ y Incolla l'ultimo comando eliminato
  13. Ctrl+ _ Annulla
  14. Ctrl+ u Taglia tutto prima del cursore
  15. Ctrl+ xxPassa dalla prima alla posizione attuale
  16. Ctrl+ l Cancella il terminale
  17. Ctrl+ c Annulla il comando
  18. Ctrl+ r Comando di ricerca nella cronologia: digitare il termine di ricerca
  19. Ctrl+ j Termina la ricerca nella voce della cronologia corrente
  20. Ctrl+ g Annulla la ricerca e ripristina la riga originale
  21. Ctrl+ n Comando successivo dalla cronologia
  22. Ctrl+ p comando precedente dalla cronologia

5
Siamo spiacenti, ma ho fornito tutti i tasti di scelta rapida utili, in cui 7,8,9,10,11,14,16,17 sono i tasti di scelta rapida cancella / elimina che possiamo utilizzare come da requisito.
Tharunkumar,

2
Va notato che CTRL+ L(16.) conserva il contenuto della riga di comando corrente.
Aziraphale,

su Windows sembra che tu debba usare Ctrl + Maiusc + A per andare all'inizio della riga
Gandalf458

3
Manca Ctrl+ h: elimina il carattere prima del cursore
peflorencio

22

Ctrl+ A, Ctrl+ Kper cancellare la riga corrente nel terminale. È quindi possibile richiamarlo con Ctrl+ Yse necessario.


16

o se stai usando la modalità vi, premi Escseguito dacc

per recuperare quello che hai appena cancellato Esce poi p:)


5
È possibile abilitare la modalità vi da echo 'set editing-mode vi' >> ~/.inputrc. Funziona anche in luoghi come i prompt dell'interprete python e alcuni client SQL
dwurf

11

Non sono sicuro che ti piaccia, ma uso Ctrl+ A(per iniziare la riga) e Ctrl+ K(per eliminare la riga) conoscevo questi comandi di emacs e li ho capiti per caso.



6
  • Ctrl+ u: passa all'inizio della riga in un buffer ad anello
  • Ctrl+ k: sposta fino alla fine della linea in un buffer ad anello
  • Ctrl+ w: sposta i caratteri e (più) parole rimaste dal cursore in un buffer di suoneria

  • Ctrl+ y: inserisci l'ultima voce dal tuo ring buffer e quindi puoi usare Alt+ yper ruotare attraverso il tuo ring buffer. Premere più volte per passare alla voce "precedente" nel buffer ad anello.


4

CTRL+ Re inizia a digitare per cercare i comandi precedenti nella cronologia. Mostrerà le linee complete.
CTRL+ di Rnuovo per pedalare.



2

Aggiungi alla lista:

In modalità Emacs, premere, Escseguito da R, eliminerà l'intera riga.

Non so perché, capita solo di trovarlo. Forse non è usato per cancellare la linea ma sembra avere lo stesso effetto. Se qualcuno lo sa, per favore dimmelo, grazie :)

Funziona in Bash, ma non funziona in Fish.


1
È il revert-linecomando readline: "Annulla tutte le modifiche apportate a questa riga". Per impostazione predefinita, è associato a M-r(Meta-R), che può essere sia Alt-R che Esc R. Ciò significa che non sta effettivamente eliminando la riga, ma solo quando era vuota all'inizio; se si scorre indietro nella cronologia dei comandi e si modifica un comando, quindi si emette revert-line, tornerà al comando che era originariamente e non eliminerà la riga.
Benjamin W.

2

Per eliminare l'intera riga indipendentemente dalla posizione del cursore, è possibile utilizzare il kill-whole-linecomando, ma per impostazione predefinita non è associato. Può essere associato, ad esempio, a Ctrl+ Alt+ Kinserendo

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

nel tuo file init di Readline (convenzionalmente ~/.inputrc ).

Varie osservazioni:

  • Per evitare di riassegnare accidentalmente una sequenza di tasti che è già in uso per qualcos'altro, è possibile controllare tutti i collegamenti con bind -P. Verificare l'associazione suggerita con

    bind -P | grep '\\e\\C-k'
  • Il nome del file init Readline viene preso dalla variabile shell INPUTRC. Se non è impostato, il valore predefinito è ~/.inputrco (se non esiste) /etc/inputrc. Nota che se hai ~/.inputrc,/etc/inputrc verrà ignorato.
  • Per ricaricare il file init di Readline, puoi usare Ctrl+ X Ctrl+R .
  • Collegamenti alle sezioni del manuale pertinenti:

2

Per pulire l'intera linea (2 modi diversi):

  • Home, Ctrl+K
  • End, Ctrl+U

0

Alt+ #commenta la riga corrente. Sarà disponibile nella storia, se necessario.

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.