Seleccione un resultado particular de las sugerencias de finalización

10

Digamos que tengo 3 archivos en un directorio particular: abc.txt, aww.txt, ant.txt

Si lo hago: cat a(y presiono la pestaña para ver las opciones) el terminal mostrará los 3 nombres de archivo:abc.txt, aww.txt, ant.txt

¿Hay alguna forma de seleccionar el enésimo resultado en lugar de escribir, especificando el número de índice en los resultados que muestra el terminal?

algo como: cat a2para obtener el segundo archivo ( aww.txt)?

samsamara
fuente
No que yo supiese. En Zsh puedes iterar sobre todas las terminaciones posibles presionando TAB varias veces (es decir, presionando TAB 4 veces se completará ant.txt). También se puede configurar para que sea posible iterar hacia atrás para una mejor navegación. Sin embargo, eso obviamente implica cambiar el shell a Zsh. Si consideras que es una alternativa lo suficientemente buena, puedo escribir una respuesta para eso.
kos

Respuestas:

11

Suponiendo que está utilizando bash, agregue lo siguiente a su ~/.bashrc:

bind '"\e[6~": menu-complete'
bind '"\e[5~": menu-complete-backward'

O para cambiar los valores predeterminados para todos los programas que usan la biblioteca de finalización de línea de lectura, no solo bash, cree el archivo que ~/.inputrccontiene:

$include /etc/inputrc
"\e[6~": menu-complete
"\e[5~": menu-complete-backward

Ahora, cuando abra una nueva terminal, puede presionar:

  • TAB como es normal para ver las terminaciones disponibles.
  • Pg Dn para seleccionar la primera finalización o cambiar a la siguiente.
  • Pg Up para seleccionar la última finalización o cambiar a la anterior.
  • Alt+ n Pg Dnpara seleccionar la enésima finalización o avanzar n finalizaciones.

Entonces, para su ejemplo, escriba Pg DnPg Dno Alt+ 2Pg Dnpara obtener el segundo archivo aww.txt.

Martin Thornton
fuente
Supongamos que está utilizando cdy desplazándose por los directorios. ¿Qué tecla presionas para "elegir" ese directorio y comenzar a cambiar el contenido de ese directorio? ¿Hay otra cosa para establecer / vincular?
Tony
Una alternativa, si no desea mover las manos demasiado lejos de la fila de inicio del teclado, es usar Ctrl + Alt + P en lugar de PageUp y Ctrl + Alt + N en lugar de PageDown, que se puede hacer con bind '"\e\20": menu-complete-backward'y bind '"\e\16": menu-complete'.
Ruslan