Control-Backspace (Unix-Kill-Rubout) für Readline?

2783
Jé Queue

In readline(3)sollte ich Control-Backspace auf dieselbe Funktion wie Control-W (Unix-Kill-Rubout) abbilden können. Unabhängig von dem, was ich einsetze, kann ~/.inputrcich es nicht erkennen, dass dies erkannt wird.

\C-\b: unix-kill-rubout 

... zum Beispiel funktioniert nicht. Kann ich Control-Backspace dem Unix-Kill-Rubout in Readline zuordnen?

6

7 Antworten auf die Frage

4
awatts

Hinzufügen

"\C-_": unix-word-rubout

zu .inputrcscheint für mich zu arbeiten.

Die C-_Darstellung unterstreicht die Kontrolle. Dies ist, was mein Terminal sendet, wenn Sie Ctrl+ drücken Backspace.

Durch Drücken von Ctrl+ Vwird eine Tastenkombination an die Konsole weitergeleitet. Für mich drücken Ctrl+ Vdann Ctrl+ BackspaceEchos ^_mit ^Bedeutung Ctrl. In .inputrc \C-ist der Ctrl-Modifizierer, also \C-_wird hier was benötigt. Mit dieser Technik können Sie andere Tastenkombinationen ermitteln, die Sie möglicherweise verwenden möchten.

3
Henry Marshall

Wie Graywh darauf hinweist, wird Backspace häufig durch dargestellt ^?. Um an ctrl+ bksp in Ihrer .inputrcDatei zu binden, müssen Sie möglicherweise die Readline-Bibliothek ändern. Dieses Ubuntu-Tutorial enthält eine neue .keytabDatei, die die Standardausgabe überschreiben kann.

Auf meinem System lasse ich mich "\e[9;3~": backward-kill-wordzu meinem hinzufügen .inputrc.

Da das Readline-Verhalten je nach System etwas zu variieren scheint, muss ich beachten, dass ich Konsole auf Kubuntu verwende.

2
graywh

Ich bezweifle, dass Ihr Terminal einen speziellen Code für die Strg-Rücktaste sendet. Rückschritt ist normalerweise Strg-? Und Sie können einem Strg-Zeichen keinen weiteren Strg-Modifizierer hinzufügen.

Eine Alternative könnte sein, dass Ihr Terminal eine spezielle Escape-Sequenz für Ctrl-Backspace sendet und diese in Ihrer readline-Konfiguration abbildet.

Rückschritt ist offiziell "^ H". Löschen ist `^?`, Aber mein Terminal sendet die Löschversion, wenn die Rücktaste gedrückt wird. Aus diesem Grund funktionierte das Binden von "\ C- \ b" nicht. jiggunjer vor 7 Jahren 0
@jiggunjer In ASCII, ja, aber ich spreche davon, was die Rücktaste bewirkt. graywh vor 7 Jahren 0
2
1
Chris Sykes

Für das Linux-Terminal können Sie dies tun, indem Sie die beim Start geladene Keymap ändern. In Ubuntu wird mein Standard geladen /etc/console-setup/cached.kmap.gz. Wenn Sie den Eintrag finden, der Ctrl-Backspace entspricht (wahrscheinlich ist Control-Delete bereits als Backspace aufgeführt), können Sie dies ändern Control_w. Nicht sicher über Terminalemulatoren, aber bei Konsole (dem Standard-KDE-Terminalemulator) gibt es sehr gute Einstellungen für Keybinds. Hoffentlich hilft das :)

Chris

1
Bjørnar Hansen

Das funktioniert für mich (in urxvt, bash):

"\b":backward-kill-word 
0
N D

Für Mac-Benutzer, die sich bei mehreren Linux-Systemen anmelden:

Wenn Sie keinen Zugriff auf die .inputrc-Datei oder andere Konfigurationsdateien auf dem System haben, auf das Sie zugreifen, und möchten, dass die Dinge universell funktionieren, unabhängig davon, an welchem ​​System Sie sich anmelden, finden Sie hier eine GUI-Lösung, die Iterm2 verwendet.

Ich habe Iterm2 auf meinem Mac von der Befehlszeile auf meinem Mac mithilfe von brew installiert ( https://brew.sh )

brew cask install iterm2 

So binden Sie eine Tastenfolge an den Steuerschlüssel in Iterm2

  1. Laden Sie die kostenlose Anwendung „Key Codes" aus dem App Store herunter. Installieren Sie sie über den untenstehenden Link und öffnen Sie sie.

  2. Schlagen Sie das Ctrl+ an. some keyIn diesem Fall verwende ich Ctrl+ w.

    Wie erhalte ich den Hex-Code?

  3. Der Hex-Code im roten Quadrat ist der Code, den wir an das Terminal senden möchten

  4. Ordnen Sie nun Ihre Schlüsselsequenz in Iterm2 zu, indem Sie sie aus dem Anwendungsordner-> Voreinstellungen-> Tasten-> + öffnen.

So ordnen Sie den Befehl dem Hex-Code zu

  1. Damit wird jetzt opt ​​+ ← delete to Ctrl+ wim Terminal zugeordnet, Sie können jedoch eine beliebige Taste einer anderen Taste zuordnen. Ich weiß, dass Ctrl+ wein schlechtes Beispiel für Emacs ist, da es Ctrl+ nicht unterstützt. wSie können diese Methode jedoch für Emacs-kompatible Abkürzungen verwenden.