Hier spielen zwei Zeileneditoren eine Rolle: der vom Kernel bereitgestellte grundlegende Zeileneditor (tty-Zeileneditor im kanonischen Modus) und der Zeileneditor von bash (implementiert über die Readline-Bibliothek). Beide haben einen Befehl zum Löschen des vorherigen Wortes, der standardmäßig an Ctrl+ gebunden ist W. Der Schlüssel kann für den kanonischen Modus tty line editor durch konfiguriert werden stty werase
; bash ahmt die Schlüsselbindung nach, die in der Einstellung tty gefunden wird, sofern sie nicht in der eigenen Konfiguration überschrieben wird.
Die werase
Aktion im tty-Zeileneditor kann nicht konfiguriert werden. Es werden immer durch Leerzeichen getrennte Wörter (ASCII) gelöscht. Es kommt selten vor, dass Sie mit dem tty-Zeileneditor interagieren. Dies erhalten Sie beispielsweise, wenn Sie cat
ohne Argument tippen . Wenn Sie dort ausgefallene Tastenkombinationen wünschen, können Sie den Befehl unter einem Tool wie rlwrap ausführen , das readline verwendet.
Bash bietet zwei Befehle zum Löschen des vorherigen Wortes : unix-word-rubout
( Ctrl+ woder wie durchgesetzt stty werase
) und backward-kill-word
( M-DEL
, dh Esc Backspace), die ein Wort als eine Folge von alphanumerischen Zeichen im aktuellen Gebietsschema und behandeln_
. Wenn Sie möchten, dass Ctrl+ Backspacedie vorherige Folge von alphanumerischen Zeichen löscht, setzen Sie nicht stty werase
und setzen Sie stattdessen die folgende Zeile in Ihre .inputrc
:
"\C-h": backward-kill-word
Beachten Sie, dass dies voraussetzt, dass Ihr Terminal das Zeichen Strg + H für Ctrl+ sendet Backspace. Leider ist es einer dieser Schlüssel ohne Standardbindung (und Backspaceinsbesondere aus historischen Gründen ein Chaos ).
Es gibt auch einen symmetrischen Befehl, kill-word
der standardmäßig an M-d
( Alt+ D) gebunden ist . Um es an Ctrl+ zu binden Delete, müssen Sie zuerst herausfinden, welche Escape-Sequenz Ihr Terminal sendet, und dann eine entsprechende Zeile in Ihr Terminal einfügen .inputrc
. Geben Sie Ctrl+ Vdann Ctrl+ ein Delete. Dadurch wird etwa so eingefügt, ^[[3;5~
dass die Initiale ^[
eine visuelle Darstellung des Escape-Zeichens ist. Dann ist die Bindung
"\e[3;5~": kill-word
Wenn Sie mit keiner der beiden Definitionen eines Wortes zufrieden sind, können Sie Ihre eigene in bash bereitstellen: siehe verwirrendes Verhalten von Tastenkombinationen im Emacs-Stil in bash