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.


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"

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).


0

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

[[ $- = *i* ]] && bind TAB:menu-complete

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
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.