Das hängt leider von bash
ab , nicht zum Terminal. Ihre Optionen sind:
-
Verwenden Sie Semikolons anstelle von Zeilenumbrüchen, obwohl Sie selbst dann nicht jeweils eine Bildschirmzeile nach oben bewegen können, sondern Zeichen- oder Wortbewegungsbefehle verwenden müssen. (Seltsamerweise
zsh
Sie können sich zumindest innerhalb eines zusammengesetzten Befehls bewegen, wenn Sie den Verlauf bearbeiten, nur nicht innerhalb des aktuellen Befehl.) Manchmalfc
(was Sie mit dem vorherigen Befehl in Ihren Editor wirft) ist der einfachste Weg, zusammengesetzte Befehle zu handhaben. -
Wenn Sie Bash verwenden, verwenden Sie die folgende Tastenkombination:
ctrl x e
Es öffnet den Befehl, an dem Sie gerade arbeiten, mit Ihrem Texteditor. Speichern Sie die Datei und beenden Sie. (Ich habe den Befehl in der Präsentation von Shell Hater gefunden.) Zsh-Benutzer haben diese Alternative.
Die Lösung besteht darin, niemals einen Befehl einzugeben, bis die Mehrfachzeile richtig ist. Geben Sie einfach Folgendes ein:Strg v Strg j wenn Sie zur nächsten Zeile wechseln möchten. Meta b um ein Wort zurückzugehen.
Gutschrift für die Antwort von @rici
Witzigerweise Strg+C ist das, wonach Sie suchen.
wenn Sie eingeschaltet sind
$ echo "foo bar
> baz
>
drücken Sie einfach Strg+C (bearbeitete Befehlszeile wird ausgesetzt) und drücken Sie Nach oben (Vorgeschichte). Ihre Eingabeaufforderung lautet:(beachten Sie das Fehlen von>)
$ echo "foo bar
baz
Jetzt können Sie sich mit Links bewegen Richtig auch durch Zeilensprünge.
Es gibt nur eine Eigenart, Sie müssen beim letzten Zeichen sein, um eine weitere Zeile hinzuzufügen, also bewegen Sie sich umher, um vorhandene Zeilen zu bearbeiten (gehen Sie zum Anfang mit Strg+A ) und drücken Sie Enter wenn das reicht oder gehe zum Ende (Strg+E ), um weitere Zeilen mit Enter hinzuzufügen . Ein weiterer Nachteil ist, dass Strg+_ (undo) stellt nur Änderungen vom letzten Strg+C wieder her