Odpowiedzi:
Powinieneś być w stanie użyć Esc, a następnie cofnij, aby usunąć słowa rozdzielone ukośnikami.
Możesz to zmienić, umieszczając to w tobie .bashrc:
bind '\C-f:unix-filename-rubout'
Teraz użyj, Ctrl+f
aby robić, co chcesz.
C-w:...
, domyślne zachowanie usuwania do następnego miejsca nadal się uruchamia. Na innym klawiszu (jak F), jeśli działa dobrze.
stty -a
? czy masz control-w jako domyślny znak dla werase? Jeśli usuniesz to ustawienie z tty, używając comman stty werase undef
, to czy bash działa zgodnie z oczekiwaniami?
W przypadku tego konkretnego problemu możesz także użyć:
Alt + Backspace
$ cd /home/me/test/a_dir/ # Alt + Backspace
$ cd /home/me/test/ # Alt + Backspace
$ cd /home/me/ # ...
Dobry odnośnik: Przygody z wymazywaniem słowa bash
Ctrl+w
lub Ctrl + B lub coś unix-filename-rubout
, ale jest to o wiele lepiej, że jest wbudowany Oprawa: M-Backspace (Alt + Backspace lub Esc Backspace)
Dzięki bash możesz uzyskać pożądany efekt, umieszczając w pliku ~ / .bashrc następujące:
bind '"\C-w":backward-kill-word'
Naciśnij CTRL+V
i kombinację klawiszy, aby zobaczyć, jak wygląda emulator terminala. Na przykład CTRL+bksp
można interpretować inaczej na różnych terminalach, np . ^H
Lub ^?
. ^
Charakter jest taki sam jak CTRL
.
/
jako dodatkowy znak stop, a nie sposób na powiązanie komendy delete-word-polecenie z innym klawiszem. Zredagowałem swoje pytanie
^F
- ale użycie "\^F"
w powyższym skrypcie nie działa
stty werase undef
powstrzyma cię od używania Cw w dowolnym programie (wiązanie pozwoli ci używać w trybie readline)