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?
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.
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
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
Laden Sie die kostenlose Anwendung „Key Codes" aus dem App Store herunter. Installieren Sie sie über den untenstehenden Link und öffnen Sie sie.
Schlagen Sie das Ctrl+ an. some keyIn diesem Fall verwende ich Ctrl+ w.
Der Hex-Code im roten Quadrat ist der Code, den wir an das Terminal senden möchten
Ordnen Sie nun Ihre Schlüsselsequenz in Iterm2 zu, indem Sie sie aus dem Anwendungsordner-> Voreinstellungen-> Tasten-> + öffnen.
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.