.inputrc TAB verhält sich nicht wie erwartet

11

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.

user541686
quelle

Antworten:

15

Readline weiß nichts über einen Modifikator namens Shiftund 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 catund 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 \eein Escape-Zeichen bedeutet).

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
Gilles 'SO - hör auf böse zu sein'
quelle
1
Ah, ^[Zarbeitete für mich (BASH); danke für die ausführliche antwort! :)
user541686
Drücken Sie die Eingabetaste vor oder nach "Katze"? Warum wird "Katze" benötigt? Ich scheine die gleichen Fluchtsequenzen ohne 'Katze' zu bekommen.
Dougkramer
@ douglas.kramer Beim Laufen wird catjegliche 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.
Gilles 'SO - hör auf böse zu sein'
Ich habe Probleme, Shift + Tab an den Befehl 'shell-expand-command' zu binden. Ich erhalte: $ cat <Enter> <Shift+Tab>Welche Anzeigen ^[[Z füge ich immer \evor der Sequenz hinzu, aus der ich erhalte Ctrl+V? Bedeutet dies:"\e^[[Z": shell-expand-command
Dougkramer
@dou Ersetzen ^[durch `\ e`
Gilles 'SO- hör auf böse zu sein'
4

Auf Xubuntu 16.04, Terminal: xfce4-Terminal 0.6.3, Shell: Bash

Damit Shift+ Tabfunktioniert, musste ich Folgendes verwenden:

bind '"\e[Z": menu-complete-backward'
Raizul
quelle
In ~/.bash_profileVerwendung: bind TAB:menu-completeund bind '"\e[Z": menu-complete-backward'(beachten Sie die Verwendung von einfachen und doppelten Anführungszeichen!).
Erik