Wenn Sie in der Windows-Befehlszeile (Powershell und Cmd) Escin einer Zeile die Taste drücken , wird alles, was Sie an der Eingabeaufforderung eingegeben haben, entfernt.
Ich habe festgestellt, dass das Drücken der Esc
Taste an der Bash-Eingabeaufforderung nichts bewirkt. Drücken Sie Esc
und backspace
löscht dann ein Wort, dies muss jedoch für jedes Wort durchgeführt werden.
Ich lerne Bash inkrementell und tippe manchmal etwas Dummes in die Mitte der Zeile und habe das Gefühl, dass es besser ist, wieder von vorne zu schreiben. Drücken backspace
ist der einzige Weg, den ich bis jetzt gefunden habe.
Wie geht's?
Ich kenne den clear
Befehl und die Ctrl-LVerknüpfung, aber ich spreche nicht über das Löschen des gesamten Terminals. Nur die Linie.
bash
command-line
Animesh
quelle
quelle
Antworten:
Sie möchten
kill-whole-line
, aber dies ist nicht standardmäßig in Bash gebunden.backward-kill-line
( CtrlX Backspace) undunix-line-discard
( CtrlU) werden vom aktuellen Punkt bis zum Zeilenanfang gelöscht. Gehen Sie also zum Zeilenende und verwenden Sie eine der beiden Optionen.quelle
bind -P
. Ich denkeCtrl-U
und dannCtrl-Y
ist die einzige Option dann.Sie können Ctrl+ verwenden C, um die Eingabe abzubrechen und eine leere neue Befehlszeile zu erhalten. Weitere Informationen finden Sie unter Ist STRG + C falsch, um zur Befehlszeile zurückzukehren? .
quelle
Ctrl+aCtrl+kspringt zum Zeilenanfang und löscht bis zum Zeilenende
quelle
^U
zunächst, in den meisten Implementierungen des Emacs-Befehlszeilenbearbeitungsmodus die gesamte Zeile zu löschen. In den Fällen, in denen der Cursor nur von links gelöscht wird (z. B. GNU Readline), drücken Sie^K
anschließend.Um die Antwort von Ignacio Vazquez-Abrams ein wenig zu erweitern, können Sie (fast) Windows-ähnliches Verhalten aus der EscTaste in Bash abrufen, indem Sie das
kill-whole-line
to Escmit dem folgenden Befehl bindenWenn Sie die Zeile zu Ihrer
~/.inputrc
Datei hinzufügen , bleibt die Bindung zwischen den Sitzungen bestehen.Beachten Sie jedoch, dass dies sehr ungewöhnlich ist, da bash den EscSchlüssel tatsächlich als einen anderen modifizierenden Schlüssel verwendet (wie eine nicht dauerhafte Alt- oder Strg-Taste). Wenn Sie sich die Liste der vorhandenen Tastenkombinationen ansehen (mit
bind -P
), werden Sie wahrscheinlich mehrere Befehle sehen, die an Tastenkombinationen gebunden sind, die mit "\ e" beginnen (z. B.Hiermit wird die Kombination Esc+ so eingestellt B, dass der Cursor zum letzten Wortanfang zurückbewegt wird - ähnlich wie bei Ctrl+ ←, mit der Ausnahme, dass Sie immer wieder loslassen müssen Esc(und Bnatürlich auch, wenn Sie dies mehr als einmal hintereinander tun möchten) ).
Und das erklärt, warum ich gesagt habe, dass das Verhalten fast Windows-ähnlich ist: Wenn Sie drücken Esc, prüft die Bash, ob Sie es in Kombination mit einer anderen Taste verwenden. Wenn Sie es also binden
kill-whole-line
, gibt es eine gewisse Verzögerung zwischen dem Drücken (oder vielmehr dem Loslassen) Escund der Bash-Aktion, mit der Sie die Leitung für Sie freischalten.Wenn Ihnen dies jedoch egal ist und Sie lieber mit der Verzögerung leben möchten, als sich auf einen anderen Tastendruck einzulassen, können Sie dies tun.
(Hinweis: Ein Großteil der Informationen hier wurde durch das Lesen und Folgen der Links in dieser Antwort erhalten .)
quelle
[19;
einen ähnlich aussehenden Escape-Code ersetzt. Am Ende fand ich die Zuordnung"\e\e"
zukill-whole-line
(dh zweimal auf Esc tippen, um die Zeile zu löschen) einen netten Kompromiss.Esc
sowieso oft ein paar Mal geschlagen, also könnte ich das versuchen. Ich habe es derzeit anCtrl
+ gebunden, kannDel
mich aber nie daran erinnern.