Come faccio a modificare le righe precedenti in un command a più righe in Bash?

Quando si inserisce un command che copre più righe in Bash, come modificare le righe precedenti? Sono un utente Linux Mint (Lisa) utilizzando GNOME Terminal.

Ad esempio, diciamo che scrivo:

$ echo "foo bar > baz > 

E poi quando ho intenzione di digitare la terza row del command, improvvisamente capisco che voglio che "foo" e "bar" siano su linee separate. Come posso riposizionare il mio cursore tra "foo" e "bar" in modo tale da poter premere entrare e metterle su righe separate?

(Non è facile come si potrebbe pensare. La freccia in su non funziona, né Ctrl-P. Quindi, per favore, prova prima di pubblicare! Grazie!)

Che, purtroppo, è a bash , non al terminal. Le tue opzioni sono:

  1. Utilizza i punti e virgola anziché le nuove righe, anche se anche allora non è ansible spostare una row di schermo alla volta ma deve utilizzare i comandi di movimento dei caratteri o parola. (In modo strano, zsh ti permette alless di spostarsi all'interno di un command composto durante la modifica della cronologia, solo non all'interno del command corrente .) A volte fc (che ti port nel tuo editor con il command precedente) è il modo più semplice per gestire i comandi composti.

  2. Se si utilizza Bash, utilizzare la seguente combinazione di tasti:

     ctrl xe 

    Si aprirà il command che si sta lavorando utilizzando l'editor di text. Salvare il file e chiudere. (Ho trovato il command sulla presentazione di Shell Hater .) Gli utenti Zsh hanno questa alternativa .

La soluzione è che non entri mai un command fino a che la linea multi-line non sia corretta, basta digitare: Ctrl v Ctrl j quando si desidera passare alla row successiva. Meta b per tornare indietro.

soluzione

credito alla risposta di @ rici

Funnily abbastanza, Ctrl + C è quello che stai cercando.

quando sei acceso

 $ echo "foo bar > baz > 

basta premere Ctrl + C (la row di command modificata verrà sospesa) e premere Su (precedente-storico). Il tuo prompt sarà: (nota l'assenza di>)

 $ echo "foo bar baz 

Ora puoi muovervi con la Destra Sinistra anche attraverso i salti della linea.

Soltanto una sola volta, dovrai essere nell'ultimo carattere per aggiungere un'altra row, quindi muovi per modificare le righe esistenti (vai a cominciare con Ctrl + A ), premere Invio se è sufficiente o goto end ( Ctrl + E ) da aggiungere più righe con Enter . Un altro inconveniente è che Ctrl + _ (annulla) solo ripristina le modifiche dall'ultimo Ctrl + C