J'utilise le menu select
comportement zsh
, qui invoque un menu en dessous du curseur où vous pouvez voir les différentes possibilités. L'option .zshrc que j'ai définie pour cela est
zstyle ':completion:*' menu select=2
Par défaut, appuyer sur Return
pour sélectionner une possibilité dans ce menu ne fait que terminer le mot - il n'envoie pas réellement la commande. Par exemple, je pourrais obtenir un menu comme celui-ci
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
En appuyant Return
ici, vous obtiendrez
~ % cd Desktop/
Je dois ensuite appuyer Return
une deuxième fois pour envoyer la commande.
Je peux modifier ce comportement pour faire en sorte qu'en appuyant sur les Return
deux sélectionne l'achèvement et envoie la commande en faisant cela
bindkey -M menuselect '^M' .accept-line
Cependant, il y a un problème avec cela: parfois, je dois compléter un fichier ou un répertoire sans envoyer la commande. Par exemple, je devrais peut-être faire ln -s Desktop Desktop2
- avec ce bindkey
comportement, essayer de terminer Desktop entraînera l' ln -s Desktop/
envoi de la commande, et je ne veux évidemment pas cela.
Je suis conscient que le simple fait d'appuyer sur l'espace me permettra de continuer la commande, mais c'est maintenant une habitude.
Compte tenu de cela, existe-t-il un moyen de faire en sorte que seules certaines commandes vous permettent d'appuyer Return
une fois (comme cd
), mais toutes les autres commandes nécessitent d'appuyer deux fois?
.zshrc
fichier ne vous permet pas de le faire, la réponse sera simplement non, à moins que vous ajustiez vous-même le code source pour prendre en charge le comportement basé sur les commandes. Mais alors vous devez encore définir pour quelles commandes faire cela, ce qui en soi est beaucoup plus fastidieux que d'appuyer simplement sur une entrée supplémentaire ...