Cela, malheureusement, dépend de bash
, pas au terminal. Vos options sont :
-
Utilisez des points-virgules au lieu de nouvelles lignes, bien que même dans ce cas, vous ne puissiez pas remonter d'une ligne d'écran à la fois, mais devez utiliser des commandes de mouvement de caractère ou de mot. (Bizarrement,
zsh
vous permet au moins de vous déplacer dans une commande composée lors de la modification de l'historique, mais pas dans le courant commande.) Parfoisfc
(qui vous lance dans votre éditeur avec la commande précédente) est le moyen le plus simple de gérer les commandes composées. -
Si vous utilisez Bash, utilisez la combinaison de touches suivante :
ctrl x e
Cela ouvrira la commande sur laquelle vous travaillez à l'aide de votre éditeur de texte. Enregistrez le fichier et quittez. (J'ai trouvé la commande sur la présentation de Shell Hater.) Les utilisateurs de Zsh ont cette alternative.
La solution est de ne jamais saisir de commande tant que la multiligne n'est pas correcte, tapez simplement :Ctrl v Ctrl j lorsque vous voulez passer à la ligne suivante. Méta b revenir en arrière d'un mot.
crédit à la réponse de @rici
Curieusement, Ctrl+C est ce que vous recherchez.
quand vous êtes sur
$ echo "foo bar
> baz
>
appuyez simplement sur Ctrl+C (la ligne de commande modifiée sera suspendue) et appuyez sur Haut (antécédents). Votre invite sera :(notez l'absence de>)
$ echo "foo bar
baz
Vous pouvez maintenant vous déplacer avec Gauche Bien même à travers les sauts de ligne.
Il n'y a qu'une seule bizarrerie, vous devez être sur le dernier caractère pour ajouter une autre ligne, alors déplacez-vous pour modifier les lignes existantes (allez commencer par Ctrl+A ) et appuyez sur Entrée si cela suffit ou allez à la fin (Ctrl+E ) pour ajouter plus de lignes avec Entrée . Un autre inconvénient est que Ctrl+_ (annuler) ne restaure que les modifications depuis le dernier Ctrl+C