Bash autocompletar como zsh

28

Estoy usando bash, pero me gustaría tener el autocompletado de estilo zsh (presionas la pestaña y pestañas a través de las posibilidades), en lugar de lo que parece hacer bash, que es mostrar una lista de posibilidades pero no elegir nada hasta que escriba un poco más para desambiguate. ¿Cómo puedo obtener el comportamiento de tipo zsh en bash?

La búsqueda de una solución ha arrojado muchas respuestas a otras preguntas, así que espero poder obtener una respuesta simple aquí (es decir, qué pegar en mi .bashrc).

(Y para responder la pregunta obvia, necesito usar bash aquí porque me acabo de unir a un equipo y ellos hacen algunas cosas para configurar bash para facilitar el trabajo en el entorno. Probablemente eventualmente pueda asegurarme de que funcione de la misma manera en zsh, pero por ahora es más fácil si uso bash y solo hago que se comporte más como zsh durante el uso interactivo).

G Gordon Worley III
fuente

Respuestas:

22

yo suelo

bind 'TAB:menu-complete'

para lograrlo

Ciclamino
fuente
11
Cuando agrego esto a mi .bashrc, la pestaña alterna entre las posibles opciones en lugar de enumerarlas en el terminal. ¿Es posible obtener ambos comportamientos?
Antonios Hadjigeorgalis
Para Shitf-Tabcompletar al revés, use bind '"\e[Z":menu-complete-backward'.
Ainar-G
24

Para obtener la primera finalización y una lista, puede agregar lo siguiente a bashrc

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

show-all-if-ambiguous: esto altera el comportamiento predeterminado de las funciones de finalización. Si se establece en 'on', las palabras que tienen más de una posible finalización hacen que las coincidencias se enumeren inmediatamente en lugar de sonar la campana. El valor predeterminado es 'apagado'.

Consulte el Manual de Bash para obtener más información.

Editar:

Esto no hace que bash funcione exactamente como zsh tho. Zsh se completará hasta el próximo partido ambiguo. Bash simplemente pasará por todos los partidos.

p.ej

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

  • zsh: se completará hasta ~ / .bash y presentará una lista de coincidencias que fácilmente le permite agregar _ y presionar <tab>nuevamente.
  • bash: solo pasará por todas las coincidencias ~ / .ba *.
ingkebil
fuente
8
Me gustó usar las teclas de flecha y la indicación visual del autocompletado de zsh. ¿Hay alguna manera de obtener esos comportamientos con bash? Cambio para una mejor compatibilidad del servidor
CESCO
2

Seguimiento de la respuesta de ingkebil , para aquellos que ponen bindy 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

Me gusta mantenerme .bashrclimpio.

bartekbrak
fuente