Comment puis-je faire en sorte que l'achèvement zsh ressemble davantage à l'achèvement bash?

17

Je suis un converti récent de bash en zsh (avec lequel j'utilise "oh my zsh"), mais une chose m'agace:

Lorsque j'appuie sur la touche de tabulation, la première saisie semi-automatique est remplie automatiquement, et vous devez parcourir les finitions en appuyant sur tab à plusieurs reprises.

Cela diffère de bash, où vous êtes juste montré une liste des achèvements. Si toutes les complétions ont le même préfixe, alors ce préfixe est rempli. Vous pouvez sélectionner celui que vous souhaitez en continuant à taper.

Je trouve ce dernier préférable car il est plus rapide de taper que de sélectionner une complétion en appuyant plusieurs fois sur tab.

Existe-t-il un moyen de faire en sorte que l'achèvement de zsh ressemble davantage à bash à cet égard?

santé mentale
la source

Réponses:

18
setopt noautomenu
setopt nomenucomplete

Vous avez besoin des deux. Si vous appuyez sur tab suffisamment de fois, vous obtiendrez la liste des achèvements, mais cela n'ajoutera jamais aucun caractère à ce que vous avez tapé jusqu'à présent.

Eyal
la source
3

Je ne pense pas que ce soit le comportement par défaut, mais vous pouvez le désactiver en utilisant:

setopt +o menucomplete

D' autres paramètres qui affectent ce comportement de différentes manières suivantes: autolist, automenu, bashautolist, listambiguous. Voir la section "Achèvement" de man zshoptionspour plus de détails. Vous pouvez ajouter cette commande à votre ~/.zshrcfichier.

Vous pouvez configurer de nombreuses autres choses de manière interactive en faisant:

autoload -U compinstall
compinstall

et en suivant les invites et les menus.

Dans Bash, ce comportement est contrôlé en se liant Tabà completeou menu-completedans ~/.inputrc:

"\C-i": complete   # do list completion

ou à partir d'une invite du shell ou dans ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
En pause jusqu'à nouvel ordre.
la source
1
meta comment: comment avez-vous fait pour que le caractère "tab" ressemble à ça?
Bonne personne
2
@Bonne personne:<kbd>Tab</kbd>
pause jusqu'à nouvel ordre.