Autocompletar Bash: primero enumere los archivos y luego cúbralos

27

¿Es posible configurar bash de tal manera que en la primera pestaña autocompletar enumere todos los archivos posibles y en los siguientes ciclos a través de las opciones?

Ambas opciones son fáciles de hacer por separado y podría vincularlas a diferentes teclas, pero lo anterior sería perfecto, pero no puedo encontrar nada al respecto en la red.

Voo
fuente
3
Ha pasado un tiempo desde que usé ZSH, pero creo que sus funciones de autocompletar son así.
jordanm
1
@jordanm Well parece una opción si nada más funciona, pero eso también implicaría actualizar todo, desde .bashrc, etc. a los equivalentes de ZSH, lo que me gustaría evitar.
Voo

Respuestas:

31

Esto parece cercano a lo que quieres:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Jim Paris
fuente
1
Casi perfecto, aparte del pequeño defecto que también se completa automáticamente en la primera pestaña, lo que puede ser un poco molesto si solo estoy tratando de averiguar el nombre exacto (es decir, tengo que eliminar un poco más de caracteres si quiero cambiar entonces), pero estoy bastante dispuesto a vivir con eso.
Voo
1
¿Cómo se puede deshacer esto fácilmente?
dingalapadum
1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris
13
@Voo agregar la tercera línea bind "set menu-complete-display-prefix on"solo enumerará los candidatos en la primera pestaña sin autocompletar.
Naitree
2
@Naitree no puede votar suficientemente su sugerencia. Funciona y ES así, mucho mejor que el comportamiento bash predeterminado. Gracias.
JBeurer
1

Esto es lo que yo uso. Por lo que puedo decir, hace exactamente lo que quieres.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Esto funciona en Mac (10.13 y 10.14) y Ubuntu (16.04 y 18.04).

Milo
fuente
0

¿Ha considerado? Se hizo referencia en Superusuario ...

[[ $- = *i* ]] && bind TAB:menu-complete
tink
fuente
1
menu-completees solo la mitad de lo que hace la pregunta. Como dice la pregunta, "[b] otras opciones son fáciles de hacer por separado" .
jw013
Sí, sé cómo cambiar el comportamiento a una de las dos opciones, pero esa es la parte fácil. El verdadero problema es cómo combinar los dos en uno.
Voo