J'ai récemment passé de Bash à Zsh sur Ubuntu et j'en suis très content. Cependant, il y a quelque chose qui me manque vraiment et je n'ai pas trouvé comment réaliser la même chose.
Dans Bash, chaque fois que je tapais une longue commande et remarquais que je devais exécuter autre chose auparavant, je devais simplement le commenter comme suit:
me@home> #mysuperlongcommand with some arguments
me@home> thecommandIhavetorunfirst #and then: then up up
me@home> #mysuperlongcommand with some arguments #I just need to uncomment it!
Cependant, cette situation assez récurrente n'est pas aussi facile à résoudre qu'avec zsh
, étant donné #mysuperlongcommand
sera exécuté comme tel (et aura pour résultat: zsh: command not found: #mysuperlongcommand
.
Ayant juste commencé à essayer zsh, j'ai également rencontré ce problème. Tu peux faire setopt interactivecomments
pour activer les commentaires de style bash.
J'utilise
bindkey "^Q" Push-input
Depuis le manuel de zsh:
Poussez l'intégralité de la construction multiligne actuelle sur la pile de tampons et revenez à l'invite de niveau supérieur (PS1). Si la construction de l'analyseur en cours n'est qu'une seule ligne, c'est exactement comme la ligne de poussée. La prochaine fois que l'éditeur démarre ou est sauté avec get-line, la construction sera sautée du haut de la pile de tampons et chargée dans le tampon d'édition.
Cela ressemble donc à ceci:
> long command
Ctrl+Q => long command disappears to the stack
> forgotten command
long command reappears from stack
> long command
De plus, si vous définissez le INTERACTIVE_COMMENTS
option (setopt INTERACTIVE_COMMENTS
), vous pourrez utiliser des commentaires dans des shells interactifs comme vous en avez l'habitude.
Je me retrouve aussi souvent à faire ça. Ce que je fais est de couper la commande longue, d'exécuter la commande qui doit être exécutée en premier, puis de la coller à nouveau. C'est simple: CTRL + coupe la commande actuelle dans un tampon, - CTRL + Y le colle. Fonctionne en zsh et bash.