Beachten Sie, dass dies im Terminal und im Standard-Emacs-Modus funktioniert (den Sie verwenden, wenn Ctrl+ Wdas vorherige Wort für Sie löscht). Es funktioniert nicht im vi-Modus von bash und hat keinen Einfluss auf vi / vim. Dies ist daher nur eine teilweise Antwort, aber das Beste, was dieser Emacs-Benutzer bieten kann.
Diese Art von Dingen wird von der readline
Bibliothek verwaltet, deren Verhalten über gesteuert werden kann ~/.inputrc
. Bearbeiten (oder erstellen, falls nicht vorhanden) ~/.inputrc
und fügen Sie diese Zeile hinzu:
"\C-H":"\C-W"
Öffnen Sie jetzt ein neues Terminal und es sollte funktionieren.
Erläuterung
Das \C-H
ist eigentlich Control+ BackSpace. Sie können die Schlüsselcodes anzeigen, indem Sie Ctrl+ und Vdann die Taste drücken , nach der Sie suchen . Sie werden sehen, dass BackSpacezurückkehrt ^H
.
Jetzt sollte es möglich sein, Control+ BackSpacean die Bash-Funktion zu binden , die das vorherige Wort ( backward-kill-word
oder unix-word-rubout
) mit löscht "\C-H": backward-kill-word
. Ich kann das jedoch nicht zum Laufen bringen. Es funktioniert perfekt mit verschiedenen Tasten ( "\C-E": backward-kill-word
z. B. macht Ctrl+ Elöscht das vorherige Wort), aber aus irgendeinem Grund kann ich es nicht zum Laufen bringen BackSpace.
So, wie dieses Problem zu umgehen, bilden wir nur Ctrl+ Backspacezu Ctrl+ W, die bereits zugeordnet ist backward-kill-word
. Wenn Sie also Ctrl+ drücken Backspace, wird dies in Ctrl+ übersetzt, Wdas wiederum gesendet wird backward-kill-word
. Die Idee für diese Problemumgehung habe ich in diesem SU-Beitrag erhalten .