Existe-t-il un moyen de rendre bash plus compatible avec TAB?

31

J'utilise bash sur mon Mac et sur mon shell cygwin. Dans l'ensemble, j'en suis très satisfait.

Ma seule plainte est cependant que son achèvement TAB n'est pas aussi bon que l'achèvement TAB de la ligne de commande Windows.

Par exemple, s'il y a deux fichiers avec le même préfixe, bash émet simplement un bip lorsque j'essaie de terminer TAB. Si je continue à clouer TAB, il me montrera éventuellement une liste de fichiers potentiels.

Je préfère définitivement la façon dont Windows fera défiler les fichiers potentiels directement sur la ligne de commande.

Existe-t-il un moyen pour que bash fonctionne de manière similaire à la ligne de commande Windows à cet égard?

S'il n'y en a pas (je ne veux pas changer de shell), est-ce que je manque quelque chose sur l'achèvement de TAB dans bash? Existe-t-il un moyen plus efficace de l'utiliser?

Frank Krueger
la source

Réponses:

42

Pour obtenir le comportement `` parcourir les achèvements possibles '', copiez ce qui suit à un endroit approprié dans votre fichier .bashrc:

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

En outre, bash-complètement fournit de nombreux types de compléments en plus de la simple complétion de nom de chemin. Par exemple, menu-complete fonctionne bien avec le module bash-complétion de Git pour compléter les noms de commandes, les noms d'options, etc.

Chris Johnsen
la source
quelle est la procédure pour cela pour le terminal OSx?
Alex
2
@Alex: vous modifiez le fichier .bashrcdans votre répertoire personnel afin qu'il contienne la ligne spécifiée. Si votre .bash_profilefichier (dans le même répertoire) n'a pas de ligne similaire source ~/.bashrc, vous devez également le modifier pour inclure une telle ligne. Le paramètre sera actif dans les nouvelles fenêtres du terminal . Si vous n'avez pas d'éditeur préféré, vous pouvez ouvrir le fichier dans TextEdit avec la commande open -e ~/.bashrc; si le fichier n'existe pas encore, vous devrez d'abord le créer avec (par exemple) la commande touch ~/.bashrc.
Chris Johnsen
1
@Alex, Bash est le shell par défaut sur 10.3 et versions ultérieures, y compris 10.7 (Lion). D'abord echo $SHELL. Ce sera le shell sélectionné pour votre compte utilisateur. Si ce n'est pas ce que vous voulez, vous devrez changer votre shell avec chpass -s /bin/bash(ou ce que vous voulez). Si $ SHELL est correct, vérifiez Terminal> Préférences> Démarrage> Shells ouverts avec: et Terminal> Préférences> Paramètres> Profils> Shell> Démarrage pour voir si le shell utilisateur par défaut a été remplacé par une commande personnalisée.
Chris Page
5
Quelqu'un a-t-il une idée de ce que je dois lier pour revenir en arrière avec Shift + Tab?
ppp
3
@ppp dans votre .bashrc:bind '"\e[Z":menu-complete-backward'
coffre