Bash autocomplete: d'abord lister les fichiers puis les parcourir

27

Est-il possible de configurer bash de telle manière que dans le premier onglet de saisie semi-automatique, il répertorie tous les fichiers possibles et sur les suivants, passe en revue les choix?

Les deux options sont faciles à faire séparément et je pourrais les lier à différentes clés, mais ce qui précède serait parfait, mais je ne trouve rien à ce sujet sur le net.

Voo
la source
3
Cela fait un moment que je n'ai pas utilisé ZSH, mais je pense que ses fonctions de saisie semi-automatique comme celle-ci.
jordanm
1
@jordanm Eh bien semble être une option si rien d'autre ne fonctionne, mais cela impliquerait également de tout mettre à jour depuis .bashrc, etc. vers les équivalents ZSH, ce que j'aimerais bien éviter.
Voo

Réponses:

31

Cela semble proche de ce que vous voulez:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Jim Paris
la source
1
Presque parfait, à part le petit défaut qu'il effectue également la saisie semi-automatique sur le premier onglet, ce qui peut être un peu ennuyeux si j'essaie juste de trouver le nom exact (c'est-à-dire que je dois supprimer un peu plus de caractères si je veux changer alors), mais je suis tout à fait disposé à vivre avec ça.
Voo
1
Comment cela peut-il être facilement annulé?
dingalapadum
1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris
13
@Voo ajouter la troisième ligne listera bind "set menu-complete-display-prefix on"simplement les candidats sur le premier onglet sans auto-complétion.
Naitree
2
@Naitree ne peut pas assez voter pour votre suggestion. Cela fonctionne et EST donc, tellement mieux que le comportement bash par défaut. Merci.
JBeurer
1

C'est ce que j'utilise. Autant que je sache, il fait exactement ce que vous voulez.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Cela fonctionne sur Mac (10.13 & 10.14) et Ubuntu (16.04 & 18.04).

Milo
la source
0

Avez-vous réfléchi? Il a été référencé chez Superuser ...

[[ $- = *i* ]] && bind TAB:menu-complete
tink
la source
1
menu-completen'est que la moitié de ce que la question pose. Comme le dit la question, «[il] est facile de faire les deux options séparément» .
jw013
Oui, je sais comment changer le comportement à l'une des deux options, mais c'est la partie facile. Le vrai problème est de savoir comment combiner les deux en un.
Voo