Czy istnieje skrót w bash i zsh, aby usunąć jeden ze składników ścieżki? Na przykład, jeśli piszę ls ~/local/color/
, a kursor znajduje się na końcu wiersza, czy istnieje skrót do usunięcia znaku color/
na końcu? Idealnie chcę rozwiązania zarówno w trybie vi, jak i emacs
19
bindkey [key] vi-backward-kill-word
Jest też
unix-filename-rubout
dlaReadline
!źródło
unix-filename-rubout
jest poprawną odpowiedzią na zadane pytanie, ponieważ usuwa ukośnik lub spację, aAlt-BkSpc
zatrzymuje się na znakach takich jak łącznik, podkreślnik, kropka itp.Domyślnie bash (i zgaduję, że zsh) będzie w trybie emacsa. Możesz spróbować czegoś takiego:
Esc + bcofnie kursor o jedno słowo. Ctrl + kusunie się do końca linii.
Większość nowoczesnych powłok (takich jak bash) będzie implementować zaawansowane funkcje edycji wiersza poleceń. Te polecenia są albo bliskie edycji emacsa (Ctrl + A dla początku linii, Ctrl + E dla końca linii, ...).
Jeśli znasz edytory podobne do vi, możesz spróbować włączyć tryb vi.
set -o vi
Daje to powłoki podobne do vi (tryb poleceń / tryb wstawiania), a ty masz dostęp do standardowych poleceń (d dla usuwania, r dla zamiany, ...)
W trybie Vi możesz zrobić to, co opisałeś:
źródło
db
w tym scenariuszu w bash. Znalazłem teżvi-backward-kill-word
w zsh to, czego chcę, i jest to wygodniejsze niż ustawienie trybu vi w bash. Ale nadal chcę znaleźć skrót trybu emacsa do tego celu w bash.db
w niektórych przypadkach występuje.