TAB .inputrc non si comporta come previsto


11

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:


15

Readline non sa nulla di un modificatore chiamato Shifte 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 cate 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 \esignifica un carattere di escape).

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward

1
Ah, ha ^[Zlavorato per me (BASH); grazie per la risposta dettagliata! :)
user541686

Premi Invio prima o dopo 'gatto'? Perché è necessario 'gatto'? Mi sembra di ottenere le stesse sequenze di escape senza "gatto".
Dougkramer,

@ douglas.kramer L'esecuzione catevita 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.
Gilles 'SO- smetti di essere malvagio' il

Sto riscontrando problemi nel far legare Shift + Tab a 'shell-expand-command'. Ricevo: $ cat <Enter> <Shift+Tab>quali display ^[[Z aggiungo sempre \eprima della sequenza che ottengo Ctrl+V? Questo si traduce in:"\e^[[Z": shell-expand-command
dougkramer,

@dou Sostituisci ^[con `\ e`
Gilles 'SO- smetti di essere malvagio'

4

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'

In ~/.bash_profileuso: bind TAB:menu-completee bind '"\e[Z": menu-complete-backward'(notare l'uso di virgolette singole e doppie!).
Erik,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.