Esto muestra que la combinación de teclas predeterminada de Meta+Esc(y Ctrl+i) en el modo de edición de línea de comandos de Emacs es la función Readline complete. La Metatecla generalmente se encuentra Escen teclados sin una Metatecla explícita . La documentación de Readline para esta función dice
Intente completar el texto antes del punto. La finalización real realizada es específica de la aplicación. Bash, por ejemplo, intenta completar el tratamiento del texto como una variable (si el texto comienza con $), nombre de usuario (si el texto comienza con
~), nombre de host (si el texto comienza con @) o comando (incluidos alias y funciones) a su vez. Si ninguno de estos produce una coincidencia, se intenta completar el nombre del archivo. Gdb, por otro lado, permite completar las funciones y variables del programa, y solo intenta completar el nombre de archivo bajo ciertas circunstancias.
Con respecto a su comentario a la respuesta de Anthon : No, presionar Escdos veces no es lo mismo que presionar Tabgeneralmente (a menos que esté en un programa que los asigne a ambos a la misma acción, como lo hace Readline por defecto). Sin embargo, Ctrl+ies igual que Tab, igual que Ctrl+[es igual que Esc. Esto significa que puede completar con Ctrl+[Ctrl+[in bashsi lo desea, siempre que el doble Escesté vinculado a la completefunción Readline . Esto es útil si está trabajando en un terminal VT220, por ejemplo, que carece de la tecla Escape:
Kusalananda, gracias por esta respuesta en profundidad. Sobre su último punto: ¿por qué presionar Escdos veces (o \M-\e) no es lo mismo que Taben bash, si ambos se completan?
flow2k
1
@ flow2k Es lo mismo si Esc-Esc y Tab están vinculados a la completefunción, que son por defecto, pero no generalmente (es decir, las pulsaciones de teclas no son "lo mismo"). No puede sustituir Tab con Esc-Esc en todas partes, solo en programas con capacidad de readline. Sin embargo, puede sustituir Tab con Ctrl-i o Esc con Ctrl- [en cualquier lugar.
Kusalananda
Un seguimiento si puedo: no veo Taben la salida de bind -p. ¿Porqué es eso? ¿Tal vez porque Tabestá "codificado" y no se puede atar?
flow2k
1
@ flow2k No, Tab es idéntico a Ctrl-i. Busque \C-i. Esta es una equivalencia a nivel de hardware.
Kusalananda
8
Eso se llama finalización de archivo, y si no tiene ningún comando anterior en la línea de comando, bash le ofrecerá completar todos los 2837 comandos que conoce, tanto los integrados como los que se encuentran en su PATH
Esc
dos veces (o\M-\e
) no es lo mismo queTab
en bash, si ambos se completan?complete
función, que son por defecto, pero no generalmente (es decir, las pulsaciones de teclas no son "lo mismo"). No puede sustituir Tab con Esc-Esc en todas partes, solo en programas con capacidad de readline. Sin embargo, puede sustituir Tab con Ctrl-i o Esc con Ctrl- [en cualquier lugar.Tab
en la salida debind -p
. ¿Porqué es eso? ¿Tal vez porqueTab
está "codificado" y no se puede atar?\C-i
. Esta es una equivalencia a nivel de hardware.Eso se llama finalización de archivo, y si no tiene ningún comando anterior en la línea de comando, bash le ofrecerá completar todos los 2837 comandos que conoce, tanto los integrados como los que se encuentran en su
PATH
Se presentan en orden ordenado
fuente