¿Hay alguna manera de hacer que bash sea más amigable con TAB?

31

Uso bash tanto en mi Mac como en mi shell cygwin. En general, estoy bastante satisfecho con eso.

Sin embargo, mi única queja es que su finalización de TAB no es tan buena como la finalización de TAB de la línea de comandos de Windows.

Por ejemplo, si hay dos archivos con el mismo prefijo, bash solo me emite un sonido cuando intento completar TAB. Si sigo clavando TAB, eventualmente me mostrará una lista de posibles archivos.

Definitivamente prefiero cómo Windows pasará por los archivos potenciales directamente en la línea de comando.

¿Hay alguna manera de hacer que bash funcione de manera similar a la línea de comandos de Windows a este respecto?

Si no lo hay (no quiero cambiar los shells), ¿me estoy perdiendo algo sobre la finalización de TAB en bash? ¿Hay alguna forma más eficiente de usarlo?

Frank Krueger
fuente

Respuestas:

42

Para obtener el comportamiento de 'ciclo a través de posibles finalizaciones', copie lo siguiente en un lugar apropiado en su archivo .bashrc:

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

Además, bash-complete proporciona muchos tipos adicionales de finalización además de la finalización del nombre de ruta. Por ejemplo, menu-complete funciona bien con el módulo bash-complete de Git para completar nombres de comandos, nombres de opciones, etc.

Chris Johnsen
fuente
¿Cuál es el procedimiento para hacer esto para el terminal OSx?
Alex
2
@Alex: edita el archivo .bashrcen su directorio de inicio para que contenga la línea especificada. Si su .bash_profilearchivo (en el mismo directorio) no tiene una línea como source ~/.bashrc, entonces también debe editarlo para incluir dicha línea. La configuración estará activa en las nuevas ventanas de Terminal . Si no tiene un editor preferido, puede abrir el archivo en TextEdit con el comando open -e ~/.bashrc; si el archivo aún no existe, primero deberá crearlo con (por ejemplo) el comando touch ~/.bashrc.
Chris Johnsen el
1
@Alex, Bash es el shell predeterminado en 10.3 y posterior, incluido 10.7 (Lion). En primer lugar echo $SHELL. Ese será el shell seleccionado para su cuenta de usuario. Si eso no es lo que desea, deberá cambiar su shell con chpass -s /bin/bash(o el shell que desee). Si $ SHELL está bien, verifique Terminal> Preferencias> Inicio> Shells abiertos con: y Terminal> Preferencias> Configuración> Perfiles> Shell> Inicio para ver si el shell de usuario predeterminado se ha anulado con un comando personalizado.
Chris Page
55
¿Alguien tiene alguna idea de qué debo vincular para volver una opción con Shift + Tab?
ppp
3
@ppp en su .bashrc:bind '"\e[Z":menu-complete-backward'
bóveda