Ich bin heute in Bewegung, hier ist eine andere Frage:
Wie kommt es .inputrc
, dass beide dasselbe tun , wenn ich sie einsetze?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
dh beide tun, was der letzte sagt.
Readline weiß nichts über einen Modifikator namens Shift
und ignoriert unbekannte Modifikatornamen. Versuchen Sie es wibble-TAB
.
Um eine Aktion an Shift+ zu binden Tab, müssen Sie herausfinden, welche Escape-Sequenz Ihr Terminal sendet. In der bash läuft cat
und Art Ctrl+ Vdann Shift+ Tab. Dadurch wird die Escape-Sequenz buchstäblich eingefügt. Es ist wahrscheinlich, dass das erste Zeichen ein Escape-Zeichen ist, dargestellt als ^[
; Verschiedene Terminals haben unterschiedliche Escape-Sequenzen, aber gemeinsame Möglichkeiten sind ␛[Z
(dh Escape, linke Klammer, Großbuchstabe Z) und ␛␉
(dh Escape, Tab). Binden Sie den Schlüssel entsprechend ein ~/.inputrc
(wobei \e
ein Escape-Zeichen bedeutet).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
^[Z
arbeitete für mich (BASH); danke für die ausführliche antwort! :)cat
jegliche Bash-Bindung vermieden. Normalerweise hat bash die gleiche Strg + V-Bindung, um das nächste Zeichen buchstäblich einzufügen, damit es keinen Unterschied macht.$ cat <Enter> <Shift+Tab>
Welche Anzeigen^[[Z
füge ich immer\e
vor der Sequenz hinzu, aus der ich erhalteCtrl+V
? Bedeutet dies:"\e^[[Z": shell-expand-command
^[
durch `\ e`Auf Xubuntu 16.04, Terminal: xfce4-Terminal 0.6.3, Shell: Bash
Damit Shift+ Tabfunktioniert, musste ich Folgendes verwenden:
quelle
~/.bash_profile
Verwendung:bind TAB:menu-complete
undbind '"\e[Z": menu-complete-backward'
(beachten Sie die Verwendung von einfachen und doppelten Anführungszeichen!).