Hoy estoy en una buena racha, aquí hay otra pregunta:
¿Cómo es que cuando pongo esto .inputrc
, ambos hacen lo mismo?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
es decir, ambos hacen lo que dice el último.
Hoy estoy en una buena racha, aquí hay otra pregunta:
¿Cómo es que cuando pongo esto .inputrc
, ambos hacen lo mismo?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
es decir, ambos hacen lo que dice el último.
Respuestas:
Readline no sabe nada acerca de un modificador llamado Shift
, e ignora silenciosamente los nombres de modificadores desconocidos. Tratar wibble-TAB
.
Para vincular una acción a Shift+ Tab, debe averiguar qué secuencia de escape envía su terminal. En bash, ejecuta cat
y escribe Ctrl+ Vluego Shift+ Tab. Esto insertará la secuencia de escape literalmente. Es probable que el primer personaje sea un personaje de escape, que se muestra como ^[
; diferentes terminales tienen diferentes secuencias de escape, pero las posibilidades comunes son ␛[Z
(es decir, escape, corchete izquierdo, Z mayúscula) y ␛␉
(es decir, escape, tabulación). Ate la clave adecuadamente en ~/.inputrc
(donde \e
significa un carácter de escape).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
cat
evita cualquier enlace de bash. Por lo general, bash tiene el mismo enlace Ctrl + V para insertar el siguiente carácter literalmente, por lo que no hace la diferencia.
$ cat <Enter> <Shift+Tab>
qué pantallas ^[[Z
agrego siempre \e
antes de la secuencia que obtengo Ctrl+V
? ¿Esto se traduce en:"\e^[[Z": shell-expand-command
^[
por `\ e`
En Xubuntu 16.04, terminal: xfce4-terminal 0.6.3, shell: bash
Para que Shift+ Tabfuncione, tuve que usar:
bind '"\e[Z": menu-complete-backward'
~/.bash_profile
uso: bind TAB:menu-complete
y bind '"\e[Z": menu-complete-backward'
(¡tenga en cuenta el uso de comillas simples y dobles!).
^[Z
trabajó para mí (BASH); ¡gracias por la respuesta detallada! :)