Wie lösche / lösche ich die aktuelle Zeile im Terminal?

795

Wenn ich ein Terminal verwende und eine Textzeile für einen Befehl eingebe, gibt es einen Hotkey oder eine Möglichkeit, diese Zeile zu löschen / löschen?

Zum Beispiel, wenn meine aktuelle Zeile / mein Befehl so lang ist wie:

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

Gibt es einen Hotkey oder Befehl, um von oben zu:

>

?

Normalerweise drücke ich die Taste, und wenn meine aktuelle Zeile eine brandneue in der Geschichte ist, wird sie gelöscht. Wenn ich jedoch meinen Befehlsverlauf über die Taste durchlaufe und mit der Bearbeitung oder Verwendung dieser Befehle beginne, wird die Eingabeaufforderung nur auf den nächstneueren Befehl im Verlauf geändert, sodass dies hier nur funktioniert, wenn ich mehrmals drücke .

Triade
quelle
6
Verknüpfungen zum schnelleren Verschieben in der Bash-Befehlszeile Diese Seite ist anschaulicher und erklärt besser, denke ich
Gab 是 好人

Antworten:

1492

Mit Ctrl+ können Sie Ubis zum Anfang löschen.

Mit Ctrl+ können Sie Wnur ein Wort löschen.

Sie können auch Ctrl+ Czum Abbrechen verwenden.

Wenn Sie den Verlauf beibehalten möchten, können Sie mit Alt+ Shift+ #einen Kommentar abgeben.


Bash Emacs Bearbeitungsmodus Spickzettel

kev
quelle
231
Die von Strg-U gelöschte Zeile kann auch mit Strg-Y abgerufen werden.
Keks
65
Wut? Also cool, danke keks & kev, ⌃ + U löscht alles vor dem Cursor, ⌃ + K löscht alles nach dem Cursor, ⌃ + A soll an den Anfang der Zeile gehen. Technisch gesehen ist ⌃ + C die beste Lösung für die Frage
Binarian
3
Alt-Shift- # funktioniert nicht? dachte die anderen tun es. Alt-Shift- # druckt ein> Zeichen auf dem Terminal
tgkprog
49
Upvoted für das Unterrichten von mir <kbd>...</kbd>Tag, um Schlüssel in SO anzuzeigen .
Samveen
11
@ LưuVĩnhPhúc ESCist ein eigener Modifikatorschlüssel in Bash. Es wird beispielsweise zum Abbrechen der Verlaufsnavigation ( CTRL+ r) oder zum Vertauschen der letzten beiden Wörter hinter dem Cursor ( ESC+ t) verwendet.
Noobish
578

Um alle Antworten zusammenzufassen:

  • Bereinigen Sie die Zeile: Mit Ctrl+ können Sie Ubis zum Anfang löschen.
  • Bereinigen Sie die Leitung: Ctrl+ E Ctrl+ U, um die aktuelle Leitung im Terminal zu löschen
  • Bereinigen Sie die Leitung: Ctrl+ A Ctrl+ K, um die aktuelle Leitung im Terminal zu löschen
  • Brechen Sie den aktuellen Befehl / die aktuelle Zeile ab: Ctrl+ C.
  • Rufen Sie den gelöschten Befehl auf: Ctrl+ Y(dann Alt+ Y)
  • Gehen Sie zum Zeilenanfang: Ctrl+A
  • Gehen Sie zum Ende der Zeile: Ctrl+E
  • Entfernen Sie beispielsweise die Vorwärtswörter, wenn Sie sich in der Mitte des Befehls befinden: Ctrl+K
  • Entfernen Sie die Zeichen links bis zum Wortanfang: Ctrl+W
  • So löschen Sie Ihre gesamte Eingabeaufforderung: Ctrl+L
  • Wechseln Sie zwischen dem Zeilenanfang und der aktuellen Cursorposition: Ctrl+XX
J4cK
quelle
6
note Strg-k löscht alles zwischen dem Cursor und dem Zeilenende.
Peter Berg
6
Entfernen Sie das nächste Wort:Alt + D
cnlevy
1
Alt+ D funktioniert nicht, deshalb habe ich es nicht aufgenommen :(
J4cK
1
CTRL + Llöscht den Bildschirm, behält aber bei, was in der aktuellen Befehlszeile eingegeben wurde.
Aziraphale
1
Ctrl + Alt + >bewegt sich zum Ende des Eingabeverlaufs, was perfekt ist, wenn Sie die Suche im Verlauf abbrechen möchten.
Astasiak
165

Ich habe die vollständige Verknüpfungsliste:

  1. Ctrl+ a Bewegen Sie den Cursor zum Zeilenanfang
  2. Ctrl+ e Bewegen Sie den Cursor zum Zeilenende
  3. Ctrl+ b Verschiebe ein Zeichen zurück
  4. Alt+ b Bewegen Sie ein Wort zurück
  5. Ctrl+ f Ein Zeichen vorwärts bewegen
  6. Alt+ f Gehen Sie ein Wort vorwärts
  7. Ctrl+ d Aktuelles Zeichen löschen
  8. Ctrl+ w Schneiden Sie das letzte Wort
  9. Ctrl+ k Schneiden Sie alles nach dem Cursor
  10. Alt+ d Wort nach dem Cursor ausschneiden
  11. Alt+ w Wort vor dem Cursor ausschneiden
  12. Ctrl+ y Fügen Sie den zuletzt gelöschten Befehl ein
  13. Ctrl+ _ Rückgängig machen
  14. Ctrl+ u Schneiden Sie alles vor dem Cursor
  15. Ctrl+ xxZwischen erster und aktueller Position wechseln
  16. Ctrl+ l Löschen Sie das Terminal
  17. Ctrl+ c Brechen Sie den Befehl ab
  18. Ctrl+ r Suchbefehl im Verlauf - Geben Sie den Suchbegriff ein
  19. Ctrl+ j Beenden Sie die Suche am aktuellen Verlaufseintrag
  20. Ctrl+ g Brechen Sie die Suche ab und stellen Sie die ursprüngliche Zeile wieder her
  21. Ctrl+ n Nächster Befehl aus dem Verlauf
  22. Ctrl+ p vorheriger Befehl aus dem Verlauf
Tharunkumar
quelle
5
Entschuldigung, aber ich habe alle nützlichen Tastenkombinationen bereitgestellt, in denen 7,8,9,10,11,14,16,17 die Tasten zum Löschen / Löschen sind, die wir je nach Anforderung verwenden können.
Tharunkumar
2
Es sollte erwähnt werden, dass CTRL+ L(16.) den Inhalt der aktuellen Befehlszeile beibehält.
Aziraphale
Unter Windows müssen Sie anscheinend Strg + Umschalt + A verwenden, um zum Zeilenanfang zu gelangen
Gandalf458
3
Es fehlt Ctrl+ h: Löschen Sie das Zeichen vor dem Cursor
peflorencio
22

Ctrl+ A, Ctrl+ K, um die aktuelle Zeile im Terminal zu löschen. Sie können es dann bei Bedarf mit Ctrl+ abrufen Y.

Spyros Mandekis
quelle
16

oder wenn Sie den vi-Modus verwenden, drücken Sie Escgefolgt voncc

um zurück zu bekommen, was du gerade gelöscht hast, Escund dann p:)

bluTaz
quelle
5
Sie können den vi-Modus aktivieren, indem Sie echo 'set editing-mode vi' >> ~/.inputrc. Funktioniert auch an Orten wie Python-Interpreter-Eingabeaufforderungen und einigen SQL-Clients
dwurf
11

Ich bin mir nicht sicher, ob du es liebst, aber ich benutze Ctrl+ A(um die Zeile zu beginnen) und Ctrl+ K(um die Zeile zu löschen). Ich war mit diesen Befehlen von Emacs vertraut und habe sie versehentlich herausgefunden.

Muhammet Can
quelle
10

Eine Alternative zu Ctrl+ A, Ctrl+ Kist Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
quelle
6
  • Ctrl+ u: Gehen Sie zum Anfang Ihrer Zeile zu einem Ringpuffer
  • Ctrl+ k: Bewegen Sie sich bis zum Ende Ihrer Zeile zu einem Ringpuffer
  • Ctrl+ w: Verschiebe Zeichen und (mehrere) Wörter, die von deinem Cursor übrig geblieben sind, in einen Ringpuffer

  • Ctrl+ y: Füge den letzten Eintrag aus deinem Ringpuffer ein und dann kannst du Alt+ verwenden y, um dich durch deinen Ringpuffer zu drehen. Drücken Sie mehrmals, um mit dem "vorherigen" Eintrag im Ringpuffer fortzufahren.

Cyrus
quelle
4

CTRL+ Rund beginnen Sie mit der Eingabe, um nach vorherigen Befehlen im Verlauf zu suchen. Zeigt volle Linien an.
CTRL+ Rerneut zum Radfahren.

Daniel
quelle
2

Ctrl + W löscht das Wort links.

Bendangelo
quelle
2

Zur Liste hinzufügen:

Wenn Sie im Emacs-Modus drücken Esc, gefolgt von R, wird die gesamte Zeile gelöscht.

Ich weiß nicht warum, finde es einfach. Vielleicht wird es nicht zum Löschen von Zeilen verwendet, hat aber zufällig den gleichen Effekt. Wenn jemand weiß, sag es mir bitte, danke :)

Funktioniert in Bash, funktioniert aber nicht in Fish.

PickBoy
quelle
1
Es ist der revert-lineBefehl readline: "Alle an dieser Zeile vorgenommenen Änderungen rückgängig machen". Es ist standardmäßig an M-r(Meta-R) gebunden, das sowohl Alt-R als auch Esc R sein kann. Dies bedeutet, dass die Zeile nicht gelöscht wird, sondern nur, wenn sie zunächst leer war. Wenn Sie in Ihrem Befehlsverlauf zurückblättern und einen Befehl revert-lineändern, wird der ursprüngliche Befehl geändert und die Zeile nicht gelöscht.
Benjamin W.
2

Um die gesamte Zeile zu löschen, unabhängig davon, wo sich der Cursor befindet, können Sie den kill-whole-lineBefehl verwenden, der jedoch standardmäßig nicht gebunden ist. Es kann zum Beispiel durch Einfügen an Ctrl+ Alt+ gebunden werdenK

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

in Ihre Readline-Init-Datei (herkömmlich) ~/.inputrc ).

Verschiedene Bemerkungen:

  • Um zu vermeiden, dass versehentlich eine Tastenfolge neu zugewiesen wird, die bereits für etwas anderes verwendet wird, können Sie alle Ihre Bindungen mit überprüfen bind -P. Überprüfen Sie die vorgeschlagene Bindung mit

    bind -P | grep '\\e\\C-k'
  • Der Readline-Init-Dateiname wird aus der Shell-Variablen übernommen INPUTRC. Wenn es nicht gesetzt ist, ist der Standardwert ~/.inputrcoder (falls nicht vorhanden) /etc/inputrc. Beachten Sie ~/.inputrc, dass, wenn Sie haben , /etc/inputrcignoriert wird.
  • Zum erneuten Laden Ihrer Readline-Init-Datei können Sie Ctrl+ X Ctrl+ verwenden R.
  • Links zu relevanten Handbuchabschnitten:
Benjamin W.
quelle
2

So reinigen Sie die gesamte Leitung (auf zwei verschiedene Arten):

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

Alt+ #kommentiert die aktuelle Zeile aus. Es wird bei Bedarf in der Historie verfügbar sein.

matter Lachs
quelle