Bash Readline löschen bis zum vorherigen Schrägstrich

15

Gibt es im Bash-Emacs-Modus eine Möglichkeit, bis zum vorherigen Schrägstrich zu löschen? Zum Beispiel, wenn ich den Befehl eingegeben habe cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathund nur die reallylongincorrectfolder.Ist da eine Verknüpfung? Dies ist ein sehr gewöhnliches Szenario für mich in der Bash. So etwas wie dF<char>in vi?

woodstok
quelle

Antworten:

9
bind -P |grep unix-filename-rubout

Zum Testen der Tastenkombination mit z. Ctrl- b:

bind \\C-b:unix-filename-rubout

Für den dauerhaften Gebrauch fügen Sie es hinzu ~/.inputrc

user1338062
quelle
2
So fügen Sie es ~/.inputrc, fügen Sie eine Zeile wie diese zu dieser Datei: "\C-b": unix-filename-rubout. Um den Effekt zu sehen, müssen Sie eine neue Bash-Shell starten (oder ein anderes Programm ausführen, das die GNU-Readline-Bibliothek verwendet).
Croad Langshan
11

Alt- Backspaceund Ctrl- wwerden üblicherweise zugeordnet backward-kill-word, was das tut. Wenn Sie herausfinden möchten, was auf Ihrem System zugeordnet ist (falls vorhanden), führen Sie das Programm aus bind -P | grep '^backward-kill-word'.

Wie von @Barmar erklärt , unterscheidet sich dies von unix-word-ruboutder vorherigen Raumgrenze .

l0b0
quelle
Aber das wird das ganze Wort töten .. Ich möchte nur bis zum letzten Schrägstrich töten
Woodstok
Es wird hier nur bis zum letzten Schrägstrich entfernt. Schrägstrich ist eines der Standardworttrennzeichen. Bist du sicher, dass du Bash benutzt?
l0b0
Meine schlechte .. Alt-Backspace entfernt es bis zum letzten Schrägstrich. Was ist der Unterschied zwischen ALt-BackSpace und Strg-W?
Woodstok
3
Ctl-w ist normalerweise gebunden an unix-word-rubout: Töte das Wort hinter dem Punkt und benutze Leerzeichen als Wortgrenze.
Barmar
2
Das funktioniert nicht genau. Msgstr "Wörter bestehen aus alphanumerischen Zeichen (Buchstaben und Ziffern)". Daher hört es bei viel mehr als nur Schrägstrichen auf. Das Standard-Ungebunden unix-filename-ruboutist etwas besser, da es bei Leerzeichen und Schrägstrichen aufhört.
Sparhawk
6

Fügen Sie dies in Ihre ein .inputrcund starten Sie eine neue Shell:

C-b:unix-filename-rubout

Ctrl- blöscht jetzt rückwärts bis zum nächsten Schrägstrich.

Nirwana!

Vergessen Sie nicht Ctrl- XCtrl- Estartet Ihren Editor, damit Sie eine komplizierte Befehlszeile bequem bearbeiten können.

Greg Bell
quelle