Zauważ, że zadziała to w terminalu i domyślnym trybie emacsa (którego używasz, jeśli Ctrl+ Wusuniesz za ciebie poprzednie słowo). Nie będzie działać w trybie vi basha i nie wpłynie na sam vi / vim. Jest to zatem tylko częściowa odpowiedź, ale najlepsza, jaką może zaoferować ten użytkownik emacsa.
Tego rodzaju rzeczą zarządza readlinebiblioteka, której zachowanie można kontrolować za pośrednictwem ~/.inputrc. Edytuj (lub utwórz, jeśli nie istnieje) ~/.inputrci dodaj ten wiersz:
"\C-H":"\C-W"
Teraz otwórz nowy terminal i powinien działać.
Wyjaśnienie
To \C-Hjest właściwie Control+ BackSpace. Możesz zobaczyć kody klawiszy, naciskając Ctrl+, Va następnie klawisz, którego szukasz. Zobaczysz, że BackSpacepowraca ^H.
Teraz powinno być możliwe powiązanie Control+ BackSpacez funkcją bash, która usuwa poprzednie słowo ( backward-kill-wordlub unix-word-rubout) za pomocą "\C-H": backward-kill-word. Nie mogę tego jednak uruchomić. Działa doskonale z różnymi klawiszami ( "\C-E": backward-kill-wordna przykład powoduje Ctrl+ Eusunięcie poprzedniego słowa), ale z jakiegoś powodu nie mogę go uruchomić BackSpace.
Tak więc, aby obejść ten problem, po prostu mapujemy Ctrl+ Backspacena Ctrl+, Wktóry jest już zmapowany backward-kill-word. Tak więc, gdy naciśniesz Ctrl+ Backspace, zostanie to przetłumaczone na Ctrl+, Wktóre z kolei wyśle backward-kill-word. Pomysł na to obejście mam z tego postu SU .