Gibt es eine Verknüpfung in Bash und Zsh, um eine Komponente eines Pfades zu löschen? Wenn ich zum Beispiel ls ~/local/color/
tippe und der Cursor am Ende der Zeile steht, gibt es eine Verknüpfung, um die color/
am Ende zu löschen ? Idealerweise möchte ich Lösungen sowohl im vi-mode als auch im emacs-mode
19
bindkey [key] vi-backward-kill-word
Es gibt auch
unix-filename-rubout
fürReadline
!quelle
unix-filename-rubout
ist die richtige Antwort auf die gestellte Frage, da es zu Schrägstrichen oder Leerzeichen löscht, währendAlt-BkSpc
bei Zeichen wie Bindestrich, Unterstrich, Punkt usw. aufhören wirdStandardmäßig befindet sich bash (und ich vermute zsh) im Emacs-Modus. Sie könnten so etwas versuchen:
Esc + bsetzt den Cursor ein Wort zurück. Ctrl + kwird bis zum Ende der Zeile gelöscht.
Die meisten modernen Shells (wie Bash) implementieren erweiterte Befehlszeilen-Bearbeitungsfunktionen. Diese Befehle befinden sich entweder in der Nähe der Emacs-Bearbeitung (Strg + A für Zeilenanfang, Strg + E für Zeilenende, ...).
Wenn Sie mit vi-ähnlichen Editoren vertraut sind, können Sie versuchen, den vi-Modus zuzulassen.
set -o vi
Es gibt Ihrem Shell vi-ähnlichen Modus (Befehlsmodus / Einfügemodus) und Sie erhalten Zugriff auf die Standardbefehle (d für Löschen, r für Ersetzen, ...)
Im Vi-Modus würden Sie wie folgt vorgehen:
quelle
db
in diesem Szenario in bash verwenden kann. Ich habe auch festgestellt, dassvi-backward-kill-word
zsh das ist, was ich will, und es ist praktischer, als den vi-mode in bash zu setzen. Aber ich möchte immer noch eine Emacs-Modus- Verknüpfung für diesen Zweck in Bash finden.db
in einigen Fällen auch der Fall ist.