Bash saisie semi-automatique comme zsh

28

J'utilise bash, mais j'aimerais avoir la saisie semi-automatique de style zsh (vous appuyez sur tab et il passe en revue les possibilités), plutôt que ce que bash semble faire, qui est d'afficher une liste de possibilités mais de ne rien choisir jusqu'à ce que je tape un peu plus pour lever l'ambiguïté. Comment obtenir le comportement de type zsh en bash?

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

(Et pour répondre à la question évidente, je dois utiliser bash ici parce que je viens de rejoindre une équipe et ils font des trucs pour configurer bash afin de rendre l'environnement plus facile à travailler. Je peux probablement éventuellement m'assurer qu'il fonctionne de la même manière dans zsh, mais pour l'instant c'est plus facile si j'utilise bash et que je le fais se comporter plus comme zsh lors d'une utilisation interactive.)

G Gordon Worley III
la source

Réponses:

22

j'utilise

bind 'TAB:menu-complete'

pour y parvenir

Ciclamino
la source
11
Lorsque j'ajoute cela à mon .bashrc, l'onglet parcourt les options possibles plutôt que de les répertorier dans le terminal. Est-il possible d'obtenir les deux comportements?
Antonios Hadjigeorgalis
Pour Shitf-Tabterminer en arrière, utilisez bind '"\e[Z":menu-complete-backward'.
Ainar-G
24

Pour obtenir un premier achèvement 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 d'achèvement. S'il est réglé sur «on», les mots qui ont plus d'une complétion possible provoquent la liste immédiate des correspondances au lieu de sonner. La valeur par défaut est «off».

voir le manuel Bash pour plus d'informations.

Modifier:

Cela ne fait pas fonctionner bash exactement comme zsh tho. Zsh se terminera jusqu'au prochain match ambigu. Bash va simplement parcourir tous les matchs.

par exemple

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh: se terminera jusqu'à ~ / .bash et présentera une liste de correspondances qui vous permet d'ajouter facilement _ et de frapper à <tab>nouveau.
  • bash: fera simplement défiler toutes les correspondances ~ / .ba *.
ingkebil
la source
8
J'ai aimé utiliser les touches fléchées et l'indication visuelle de l'auto-complétion de zsh. Existe-t-il un moyen d'obtenir ces comportements avec bash? Je reviens pour une meilleure compatibilité du serveur
CESCO
2

Faisant suite à ingkebil réponse de, pour ceux qui mettent bindet seten inputrc:

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

J'aime garder ma .bashrcpropreté.

bartekbrak
la source