Comment puis-je faire que l'achèvement zsh se comporte comme l'achèvement Bash?


12

Je suis passé à zsh, mais je n'aime pas l'achèvement. Si j'ai 20 fichiers, chacun avec un préfixe partagé, en appuyant sur tab, zsh complétera complètement le premier fichier, puis continuez à parcourir la liste à chaque pression sur tab. Si j'en veux un vers la fin, je devrai appuyer plusieurs fois sur tab.

En bash, c'était simple - appuyez sur tab et j'obtiendrais le préfixe. Si je continuais à taper (et à appuyer sur tab), bash se terminerait autant qu'il pourrait en être certain. Je trouve ce comportement beaucoup plus intuitif mais préfère les autres fonctionnalités de zsh à bash.

Existe-t-il un moyen d'obtenir ce style d'achèvement? Google a suggéré setopt bash_autolist, mais cela n'a eu aucun effet pour moi (et aucun message d'erreur n'a été imprimé au démarrage de mon shell).

Merci.

Réponses:


7

Essayer:

setopt autolist
unsetopt menucomplete

Fonctionne assez bien, pas exactement la même chose mais c'est certainement quelque chose auquel je peux m'habituer. Merci beaucoup!
nsm

8

Ce que vous voulez, c'est probablement ceci:

setopt noautomenu

1
(10 ans plus tard) La réponse acceptée n'a eu aucun effet (apparent) pour moi. C'était exactement ce que je voulais et ce qui semble être demandé par le PO.
Jer

1

Il y a une autre option si vous utilisez l'option "menu select" dans .zshrc comme ceci:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Vous pourrez parcourir le résultat avec les touches fléchées. Prenons votre exemple avec "20 fichiers avec un préfixe partagé":

  • lors de la première pression sur [TAB], zsh terminera le plus possible et affichera ensuite une liste de possibilités
  • alors vous pouvez soit compléter comme vous le feriez dans bash (tapez un caractère supplémentaire, passez à 0)
  • ou retapez [TAB] et vous verrez alors les choix possibles mis en évidence dans le menu sous votre invite shell; bonus, vous pouvez naviguer dans les possibilités avec vos touches fléchées

En fin de compte pour atteindre la dernière possibilité:

  • avec Bash, au mieux, vous frappez [TAB] puis un caractère supplémentaire puis [TAB] à nouveau (peut-être plus)
  • avec Zsh, vous appuyez à nouveau sur [TAB] puis sur [TAB] (pour entrer dans le menu), puis sur "<-" (flèche gauche) pour atteindre les derniers éléments

Les deux sont 3 coups clés dans ce cas précis. Le reste est surtout une question de goût.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.