¿Cómo hacer que el terminal se complete automáticamente cuando hay varios archivos / directorio?
32
Si tengo varios directorios, como:
afoo abar
a veces mi terminal rechazará el autocompletado cuando presiono tab (por ejemplo, "cd a" y luego tab), e imprimo la lista de directorios en su lugar. A veces incluso produce un sonido ruidoso y molesto. ¿Alguna idea de cómo hacer que se complete automáticamente en casos como este? Por ejemplo, puede mostrar abar primero, y luego afoo si presiono tab nuevamente. Vi que este es el caso en Windows, o alguna aplicación en Ubuntu
Algo que me salva la vida es tener un ciclo bash a través de las posibilidades en lugar de mostrar una lista tonta.
Como bash está utilizando readlinepara su autocompletado, agregue las siguientes líneas a~/.inputrc
Una vez que estés satisfecho y ha probado a fondo por debajo solución para unos pocos días / semanas, cortar y pegar (no copie!) La misma configuración de ~/.inputrca /etc/inputrcla que contiene la configuración de todo el sistema, por lo que esta disponible para todos los usuarios de su sistema (incluido invitado).
El codez:
# mappings to have up and down arrow searching through history:"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: "\e[C": forward-char
"\e[D": backward-char
# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:"\t": menu-complete
"\e[Z": menu-complete-backward
luego exitsu terminal (o terminal remota como masilla) y ábralo nuevamente ...
Ejemplos:
Cuando tiene 3 archivos: file1, file2y file3, y escribe:
e fTabTabTab
pasará por:
e file1
e file2
e file3
y cuando quieras ir hacia atrás, solo presiona Shift+Tab
Cuando escribes:
very-complicated-command with lots of command line parameters
y la próxima vez que necesite el mismo comando, simplemente escriba:
very↑
y te escribirá:
very-complicated-command with lots of command line parameters
¡Esto te ahorrará un montón de tiempo en bash! ;-)
Esto es bastante agradable, gracias (y tengo mi voto a favor). ¿Existe una forma universal de mostrar las opciones que atravesará, que combina lo mejor de ambos mundos? Me gusta la posibilidad de tab + tab con carpetas y subcomandos, etc., así que no tengo que recordarlos a todos (p git branch <tab through branches>. Ej ., Sin embargo, si pudiera ver una lista y una pestaña a través de sus elementos, ¡sería genial! Para directorios y archivos lses una opción para ver qué elementos están disponibles. Sin embargo, para los subcomandos no es tan fácil ni obvio, desafortunadamente.
Erik
¡Esto también funciona en PuTTy! Solo tuve que reiniciarlo una vez :)
np8
@Erik: Aparentemente, lo que pediste es posible pero no voy a editar mi respuesta para simplificar las cosas aquí. (antiguo comentario eliminado de que no es posible)
Fabby
18
Después del primero tab, debe insertar más letras. Entonces si escribes
cd a
y pulsa tabno obtienes nada y después de un segundo tab(inmediatamente después) obtienes una lista de los nombres que comienzan ay luego necesitas insertar un fpara que se complete automáticamente el resto
En mi humilde opinión: Esta es la forma correcta. Personalmente, encuentro el comportamiento de Windows muy molesto. Considere el caso en el que tiene muchos archivos comenzando ay necesita el último. Cuando accidentalmente presiona tabulador después ade recorrer la lista de todas las terminaciones posibles para llegar a la correcta.
Tobias
@Tobias: cuando accidentalmente presionas [Tab] demasiado pronto usando el otro sistema , todavía hay [Ctrl] [K] ... ;-)
~/.inputrc
podría ser preferible a/etc/inputrc
, y 2. Creo que puede configurar estobash
directamente: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git branch <tab through branches>
. Ej ., Sin embargo, si pudiera ver una lista y una pestaña a través de sus elementos, ¡sería genial! Para directorios y archivosls
es una opción para ver qué elementos están disponibles. Sin embargo, para los subcomandos no es tan fácil ni obvio, desafortunadamente.Después del primero tab, debe insertar más letras. Entonces si escribes
y pulsa tabno obtienes nada y después de un segundo tab(inmediatamente después) obtienes una lista de los nombres que comienzan
a
y luego necesitas insertar unf
para que se complete automáticamente el restocd a
tabtabf
tabtabresultará en
fuente
a
y necesita el último. Cuando accidentalmente presiona tabulador despuésa
de recorrer la lista de todas las terminaciones posibles para llegar a la correcta.