Sono su un rotolo oggi, ecco un'altra domanda:
Come mai quando li inserisco .inputrc
, entrambi fanno la stessa cosa?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
cioè fanno entrambi quello che dice l'ultimo.
Sono su un rotolo oggi, ecco un'altra domanda:
Come mai quando li inserisco .inputrc
, entrambi fanno la stessa cosa?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
cioè fanno entrambi quello che dice l'ultimo.
Risposte:
Readline non sa nulla di un modificatore chiamato Shift
e ignora tranquillamente i nomi di modificatori sconosciuti. Prova wibble-TAB
.
Per associare un'azione a Shift+ Tab, devi scoprire quale sequenza di escape invia il tuo terminale. In bash, esegui cat
e digita Ctrl+ Vquindi Shift+ Tab. Ciò inserirà letteralmente la sequenza di escape. È probabile che il primo personaggio sarà un personaggio di escape, mostrato come ^[
; terminali diversi hanno sequenze di escape diverse, ma possibilità comuni sono ␛[Z
(es. escape, parentesi sinistra, maiuscola) e ␛␉
(es. escape, tab). Associa la chiave in modo appropriato ~/.inputrc
(dove \e
significa un carattere di escape).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
cat
evita qualsiasi associazione bash. Di solito bash ha lo stesso legame Ctrl + V per inserire letteralmente il carattere successivo in modo che non faccia alcuna differenza.
$ cat <Enter> <Shift+Tab>
quali display ^[[Z
aggiungo sempre \e
prima della sequenza che ottengo Ctrl+V
? Questo si traduce in:"\e^[[Z": shell-expand-command
^[
con `\ e`
Su Xubuntu 16.04, terminale: xfce4-terminal 0.6.3, shell: bash
Per far funzionare Shift+ Tabho dovuto usare:
bind '"\e[Z": menu-complete-backward'
~/.bash_profile
uso: bind TAB:menu-complete
e bind '"\e[Z": menu-complete-backward'
(notare l'uso di virgolette singole e doppie!).
^[Z
lavorato per me (BASH); grazie per la risposta dettagliata! :)