Wie bearbeite ich vorherige Zeilen, wenn ich einen Befehl eingebe, der sich über mehrere Zeilen in Bash erstreckt? Ich bin ein Linux Mint (Lisa) Benutzer, der GNOME Terminal verwendet.
Nehmen wir zum Beispiel an, ich tippe:
$ echo "foo bar
> baz
>
Und wenn ich dann im Begriff bin, die dritte Zeile des Befehls einzugeben, wird mir plötzlich klar, dass "foo" und "bar" in getrennten Zeilen stehen sollen. Wie würde ich meinen Cursor zwischen "foo" und "bar" neu positionieren, sodass ich die Eingabetaste drücken und sie in separate Zeilen setzen könnte?
(Es ist nicht einfach, wie Sie vielleicht denken. Der Aufwärtspfeil funktioniert nicht und Strg-P auch nicht. Probieren Sie es also bitte vor dem Posten aus! Danke!)
linux
bash
gnome
gnome-terminal
Asher Walther
quelle
quelle
Antworten:
Das liegt leider an
bash
, nicht am Terminal. Ihre Möglichkeiten sind:Verwenden Sie Semikolons anstelle von Zeilenumbrüchen, obwohl Sie auch dann nicht gleichzeitig eine Bildschirmzeile nach oben bewegen können, sondern Zeichen- oder Wortbewegungsbefehle verwenden müssen. (Seltsamerweise
zsh
können Sie sich zumindest innerhalb eines zusammengesetzten Befehls bewegen, wenn Sie den Verlauf bearbeiten, jedoch nicht innerhalb des aktuellen Befehls.) Manchmalfc
(wodurch Sie mit dem vorherigen Befehl in Ihren Editor geworfen werden) ist der Umgang mit zusammengesetzten Befehlen am einfachsten.Wenn Sie Bash verwenden, verwenden Sie die folgende Tastenkombination:
Es öffnet den Befehl, an dem Sie mit Ihrem Texteditor arbeiten. Speichern Sie die Datei und beenden Sie sie. (Ich habe den Befehl in der Präsentation von Shell Hater gefunden .) Zsh-Benutzer haben diese Alternative .
quelle
Die Lösung besteht darin, erst dann einen Befehl einzugeben, wenn die Mehrfachzeile richtig ist. Geben Sie einfach Folgendes ein: ein, CtrlvCtrlj wenn Sie zur nächsten Zeile wechseln möchten. Metabein Wort zurückgehen.
Dank an @ ricis Antwort
quelle
Lustigerweise Ctrl+Cist es das , wonach Sie suchen.
wenn du dran bist
Drücken Sie einfach Ctrl+C(bearbeitete Befehlszeile wird angehalten) und dann Up(Vorgeschichte). Ihre Eingabeaufforderung lautet: (Beachten Sie das Fehlen von>)
Jetzt können Sie sich Left Rightauch durch Liniensprünge bewegen .
Es gibt nur eine Besonderheit. Sie müssen sich auf dem letzten Zeichen befinden, um eine weitere Zeile hinzuzufügen. Bewegen Sie sich also umher, um vorhandene Zeilen zu bearbeiten (beginnen Sie mit Ctrl+A) und drücken Sie, Enter wenn dies ausreicht, oder gehen Sie zu end ( Ctrl+E), um weitere Zeilen hinzuzufügen Enter. Ein weiterer Nachteil ist, dass durch das Ctrl+_Rückgängigmachen nur die letzten Änderungen wiederhergestellt werdenCtrl+C
quelle
Kopieren Sie die Befehle, fügen Sie sie in den Editor ein und formatieren Sie sie von dort aus. Danach können Sie Ihre Befehle zurück in das Terminal kopieren.
quelle