.inputrc TAB nie działa zgodnie z oczekiwaniami

11

Jestem na bieżąco, oto kolejne pytanie:

Jak to się stało, że kiedy je włożyłem .inputrc, oboje robią to samo?

TAB: menu-complete
Shift-TAB: menu-complete-reverse

tzn. oboje robią wszystko, co mówi ostatni.

użytkownik541686
źródło

Odpowiedzi:

15

Readline nie wie nic o nazwie modyfikatora Shifti cicho ignoruje nieznane nazwy modyfikatorów. Spróbować wibble-TAB.

Aby powiązać akcję z Shift+ Tab, musisz dowiedzieć się, jaką sekwencję ucieczki wysyła twój terminal. W bash uruchom cati wpisz Ctrl+, Va następnie Shift+ Tab. Spowoduje to wstawienie sekwencji ucieczki dosłownie. Najprawdopodobniej pierwszą postacią będzie postać ucieczki, pokazana jako ^[; różne terminale mają różne sekwencje specjalne, ale typowymi możliwościami są ␛[Z(tj. ucieczka, lewy nawias, wielka ␛␉litera Z) i (tj. ucieczka, tab). Powiąż odpowiednio klucz w ~/.inputrc(gdzie \eoznacza znak ucieczki).

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
Gilles „SO- przestań być zły”
źródło
1
Ach, ^[Zpracował dla mnie (BASH); dzięki za szczegółową odpowiedź! :)
user541686,
Czy naciskasz Enter przed czy po „cat”? Dlaczego potrzebny jest „kot”? Wydaje mi się, że dostaję te same sekwencje ucieczki bez „kota”.
dougkramer
@ douglas.kramer Uruchamianie catpozwala uniknąć wiązania bash. Zwykle bash ma to samo powiązanie Ctrl + V, aby wstawić dosłownie następny znak, więc nie robi to różnicy.
Gilles „SO- przestań być zły”
Mam problem z połączeniem klawiszy Shift + Tab z poleceniem shell-expand-command. Rozumiem: $ cat <Enter> <Shift+Tab>które wyświetla ^[[Z Czy zawsze dodawam \eprzed sekwencją, z której otrzymuję Ctrl+V? Czy to przekłada się na:"\e^[[Z": shell-expand-command
dougkramer
@dou Zamień ^[na `\ e`
Gilles 'SO- przestań być zły'
4

Na Xubuntu 16.04, terminal: xfce4-terminal 0.6.3, shell: bash

Do Shift+ Tabdo pracy musiałem użyć:

bind '"\e[Z": menu-complete-backward'
Raizul
źródło
W ~/.bash_profileużyciu: bind TAB:menu-completei bind '"\e[Z": menu-complete-backward'(zauważ użycie pojedynczych i podwójnych cudzysłowów!).
Erik