Questo, sfortunatamente, spetta a bash
, non al terminale. Le tue opzioni sono:
-
Usa i punti e virgola invece delle nuove righe, anche se anche in questo caso non puoi spostarti su una riga dello schermo alla volta ma devi usare comandi di movimento di caratteri o parole. (Stranamente,
zsh
almeno ti consente di spostarti all'interno di un comando composto durante la modifica della cronologia, ma non all'interno della corrente comando.) A voltefc
(che ti lancia nel tuo editor con il comando precedente) è il modo più semplice per gestire i comandi composti. -
Se stai usando Bash, usa la seguente combinazione di tasti:
ctrl x e
Si aprirà il comando su cui stai lavorando usando il tuo editor di testo. Salva il file ed esci. (Ho trovato il comando sulla presentazione di Shell Hater.) Gli utenti Zsh hanno questa alternativa.
La soluzione è non inserire mai un comando finché la riga multipla non è corretta, basta digitare:Ctrl v Ctrl j quando vuoi passare alla riga successiva. Meta b per tornare indietro di una parola.
grazie alla risposta di @rici
Stranamente, Ctrl+C è quello che stai cercando.
quando sei attivo
$ echo "foo bar
> baz
>
basta premere Ctrl+C (la riga di comando modificata verrà sospesa) e premi Su (storia precedente). Il tuo prompt sarà:(nota l'assenza di>)
$ echo "foo bar
baz
Ora puoi spostarti con Sinistra Giusto anche attraverso i salti di riga.
C'è solo una stranezza, devi essere sull'ultimo carattere per aggiungere un'altra riga, quindi spostati per modificare le righe esistenti (vai all'inizio con Ctrl+A ) e premi Invio se è sufficiente o vai alla fine (Ctrl+E ) per aggiungere più righe con Invio . Un altro svantaggio è che Ctrl+_ (annulla) ripristina solo le modifiche dall'ultimo Ctrl+C