Faire remplir la tabulation de BASH en premier match?

11

Existe-t-il un moyen de faire en sorte que BASH remplisse la première correspondance lorsque j'appuie sur TAB, un peu comme l'invite de commande Windows?

(Il devrait toujours afficher la liste des correspondances, mais il doit les parcourir lorsque je continue d'appuyer sur tab.)

c'est-à-dire que le but ici est de pouvoir remplir n'importe quelle correspondance avec seulement la touche TAB, avec suffisamment de pressions - comme dans Windows.

user541686
la source

Réponses:

15

Ajoutez ce qui suit à votre .inputrcfichier (l'emplacement exact varie selon les systèmes):

"\C-i": menu-complete

Ceci mappe TAB sur menu-complete, qui termine automatiquement la première correspondance.

Ensuite, ajoutez (ou décommentez) show-all-if-ambiguous, cela montre la liste des achèvements possibles sur la première touche TAB.

Alternativement, vous pouvez définir le menu complet par session (sans modification .inputrc) en faisant

bind '"\C-i" menu-complete'
Philomath
la source
Non, ce n'est certainement pas comme l'invite de commande Windows. :-)
user541686
@Mehrdad: édité, j'espère l'avoir maintenant.
Philomath
+1 presque !!! C'est ce que je veux, mais y a-t-il un moyen de le faire et d' afficher le menu s'il est ambigu? (Cela peut demander trop, je sais, mais j'espère que c'est possible.)
user541686
@Mehrdad: si c'est ce que vous voulez, acceptez-le, cela aide les gens à obtenir rapidement les bonnes réponses. Quant à votre nouvelle demande de faire les deux à la fois, je ne pense pas que ce soit possible, mais qui sait? ... Vous pouvez cependant vous lier menu-completeà une autre séquence de touches, comme "\M-s"pour Meta+S, donc vous pouvez choisir à volonté.
Philomath
1
Vous savez quoi? Il semble que cela fasse exactement ce que je veux: d'abord afficher le menu, puis parcourir les options! Je ne pense pas avoir vu cela sur le premier ordinateur que j'ai essayé (peut-être que je n'y prêtais pas attention), mais cela semble fonctionner parfaitement! :) (Edit: Il semble que vous ayez besoin à la fois de ce paramètre et show-all-if-ambiguous d'être
activé
4

Bien que je ne sache pas comment faire fonctionner cette fonctionnalité avec bash, zsh est fourni avec exactement ce que vous voulez par défaut. Découvrez oh-my-zsh et zsh .

zsh a la plupart des fonctionnalités de bash avec des fonctionnalités supplémentaires prêtes à l'emploi, comme la possibilité de naviguer avec seulement un onglet et d'entrer!

La plupart des distributions Linux sont livrées avec un package pour installer zsh.

Chris Knadler
la source
1
... oh mon zsh !! C'est intéressant, je vais y jeter un œil ... il peut ou non faire ce dont j'ai besoin.
user541686
Heureux d'avoir pu aider. Quelle distribution utilisez-vous? Je peux vous donner une réponse plus approfondie avec un guide sur la façon d'installer zsh et oh my zsh.
Chris Knadler
+1 J'ai installé zsh, ça a l'air plutôt génial! Si je ne rencontre aucun problème, je l'accepterais aussi, merci! :) (J'utilise Ubuntu btw.)
user541686
Génial, si vous venez d'exécuter apt-get install zsh puis d'exécuter le programme d'installation automatique de oh-my-zsh ici , vous devriez être prêt à partir. Faites-moi savoir si vous avez besoin d'aide pour le configurer.
Chris Knadler