équivalent zsh de bash show-all-if-ambiguous?


8

En bash, si vous appuyez sur tab quand il y a plusieurs achèvements possibles, vous obtenez une liste de correspondances qui continue de réimprimer si vous appuyez plusieurs fois sur tab. Dans tcsh, la définition de la saisie semi-automatique sur améliorée permet également d'atteindre cet objectif.

Dans zsh, vous obtenez la liste des matchs, mais au 2ème, 3ème onglet, il commence à parcourir les matchs. Existe-t-il un moyen pour que zsh fasse l'équivalent du show-all-if-ambiguous de bash sans le vélo?

Je ne recherche pas l'intelligent mais inutile "pourquoi appuieriez-vous plusieurs fois sur tab si il s'affichait après le premier?". Si j'avais pu ajuster mes habitudes, je l'aurais fait maintenant.

Réponses:


5

Zsh a beaucoup d' options liées à l'achèvement (voir ci- man zshoptionsdessous Completion). Je pense que vous êtes après setopt no_auto_menuet peut-être setopt bash_auto_listaussi.


Désolé, j'ai mal formulé ma question. Je veux savoir comment désactiver le cycle de complétion des tabulations. Je pense que je vais commencer une nouvelle question.

3
@ user714112: setopt no_auto_menune désactive pas le cycle de complétion de tabulation: si vous appuyez sur Tabet que le préfixe actuel est ambigu, vous voyez un menu, et c'est tout, la ligne de commande ne changera pas.
Gilles 'SO- arrête d'être méchant'

Merci, vous avez raison. Je ne sais pas pourquoi je ne l'ai pas vu plus tôt. Est-il possible de le faire réafficher la liste sur les 2nd, 3rd, 4th TAB au lieu de rien? L'instinct humain est de penser que votre clavier ne fonctionne pas si rien ne se passe sur les touches 2, 3 et 4.
Sridhar Sarnobat

@ user7000: Encore une fois, il réaffiche la liste à chaque fois que vous appuyez sur Tab. Si j'efface l'écran du menu de l'émulateur de terminal ou crée un fichier, puis appuyez à Tabnouveau, zsh réaffiche la liste et affiche le nouveau fichier. (Je viens de tester avec zsh 4.3.4, et je ne pense pas que ce comportement ait changé depuis longtemps.)
Gilles 'SO- arrête d'être méchant'

1
J'ai finalement trouvé la solution. J'avais besoin de vos 2 options et de la suppression de ALWAYS_LAST_PROMPT. Cela me donne donc le comportement insaisissable que je voulais: setopt bash_auto_list; setopt no_auto_menu; unsetopt ALWAYS_LAST_PROMPT; Encore une fois, merci de m'avoir aidé. J'apprécie votre persévérance
Sridhar Sarnobat
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.