41 votes

Autocomplétion Bash comme zsh

Je suis en train d'utiliser bash, mais j'aimerais avoir l'autocomplétion de style zsh (vous appuyez sur Tab et cela parcourt les possibilités), plutôt que ce que fait apparemment bash, c'est-à-dire afficher une liste de possibilités mais ne pas choisir quoi que ce soit tant que je n'ai pas tapé davantage pour dissiper l'ambiguïté. Comment puis-je obtenir le comportement de type zsh dans bash?

La recherche d'une solution a donné beaucoup de réponses à d'autres questions, donc j'espère pouvoir obtenir une réponse simple ici (c'est-à-dire ce qu'il faut coller dans mon .bashrc).

(Et pour répondre à la question évidente, j'ai besoin d'utiliser bash ici parce que je viens de rejoindre une équipe et ils font certaines choses pour configurer bash afin de rendre l'environnement plus facile à utiliser. Je pourrais probablement finir par m'assurer que tout fonctionne de la même manière dans zsh, mais pour l'instant, il est plus facile si j'utilise bash et que je le fais simplement se comporter davantage comme zsh pendant une utilisation interactive.)

36voto

ingkebil Points 461

Pour obtenir la première complétion et une liste, vous pouvez ajouter ce qui suit à bashrc

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'

show-all-if-ambiguous: Cela modifie le comportement par défaut des fonctions de complétion. Si défini sur ‘on’, les mots ayant plus d'une complétion possible provoquent l'affichage immédiat des correspondances au lieu de sonner le signal. La valeur par défaut est ‘off’.

voir Manuel de Bash pour plus d'informations.

Modifier :

Cela ne fait pas fonctionner bash exactement comme zsh cependant. Zsh complétera jusqu'à la prochaine correspondance ambiguë. Bash passera simplement par toutes les correspondances.

par exemple

$ ls ~/.ba .bashrc .bash_history .bash_profile

  • zsh: complétera jusqu'à ~/.bash et présentera une liste de correspondances qui vous permettra facilement d'ajouter _ et d'appuyer à nouveau sur .
  • bash: passera simplement par toutes les correspondances de ~/.ba*.

30voto

Digits Points 239

J'utilise

bind 'TAB:menu-complete'

pour y arriver

8voto

Rakib Fiha Points 191

En Bash : L'autocomplétion à la manière de Zsh peut être réalisée avec Ble.sh.

# Essai rapide sans installation
# nécessite les commandes git, make (GNU make) et gawk

git clone --recursive https://github.com/akinomyoga/ble.sh.git
make -C ble.sh
source ble.sh/out/ble.sh

Voici une démonstration rapide de Bash avec blesh. Pour plus de détails, voir : README de Ble.sh

entrer la description de l'image ici

3voto

bartekbrak Points 130

En faisant suite à la réponse de ingkebil, pour ceux qui ajoutent bind et set dans inputrc :

$ tail -n 4 /etc/inputrc
# zsh like completion:
# https://superuser.com/questions/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

J'aime garder mon .bashrc propre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X