Comment sauvegarder la command en cours sur zsh?

Je tape une command, je me callbackle que je dois vérifier quelque chose, si j'appuie sur Ctrl + U, la command disparaît et je peux taper autre chose, mais la command que je tapais ne figure pas dans l'historique.

Y at-il un moyen de récupérer cette command, ou un raccourci différent que je peux appuyer sur pour sauvegarder quelque part la command?

Ctrl + Y collera le dernier élément que vous avez découpé (avec Ctrl + U , Ctrl + K , Ctrl + W , etc.).

Jetez un oeil à la command push-line ZLE. Cette command pousse le contenu actuel de la ligne sur la stack de memory tampon et efface la ligne. Vous pouvez ensuite entrer une autre command et lorsque ZLE redémarre, la ligne est extraite de la stack tampon dans le tampon de ligne.

 prompt@world$ cp abc /mnt/usr/bin # The user presses Esc-q prompt@world$ # The line is cleared prompt@world$ mount -v /dev/sdb1 /mnt # And the user can enter another command mount: /dev/sdb1 mounted on /mnt prompt@world$ cp abc /mnt/usr/bin # The first command is popped off of the stack # as soon as ZLE comes back. 

Par défaut, cette command est liée à Alt / Esc q en mode emacs. Vous pouvez lier cette command à une key différente avec la command bindkey . Par exemple, pour le lier à Alt / Esc v , ajoutez bindkey '^[V' push-line à votre zshrc .

Vous searchz la command push-line , qui est liée à Ctrl + Q et Esc Q par défaut. Cette command efface l'input et vous permet d'entrer une autre command; une fois que vous avez exécuté ou annulé cette command, la command précédente est ramenée pour modification.

Avec une command multiligne, la push-line n'efface que la ligne courante et garde les autres lignes dans le tampon d'input. Il y a une autre command push-input qui efface tout le tampon d'input, pas lié à une key par défaut.

J'utilise un wrapper autour de cette command. Je tape Ctrl + Z pour "suspendre" la command que je tape et tapez une autre command. Après avoir exécuté cette command (ou avorté avec Ctrl + C ), la command suspendue revient à l'édition (même en mémorisant la position du slider). Pour plus de commodité, si la command line est vide lorsque je tape Ctrl + Z , la key invoque le bg embedded (un double Ctrl + Z envoie donc directement une command en cours à l'arrière-plan).

 fancy-ctrl-z () { emulate -LR zsh if [[ $#BUFFER -eq 0 ]]; then bg zle redisplay else zle push-input fi } zle -N fancy-ctrl-z bindkey '^Z' fancy-ctrl-z 

Une méthode low-tech qui fonctionne dans n'importe quel shell consiste à append un # au début de la ligne courante et appuyez sur Entrée .