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 readline
biblioteka, której zachowanie można kontrolować za pośrednictwem ~/.inputrc
. Edytuj (lub utwórz, jeśli nie istnieje) ~/.inputrc
i dodaj ten wiersz:
"\C-H":"\C-W"
Teraz otwórz nowy terminal i powinien działać.
Wyjaśnienie
To \C-H
jest 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-word
lub 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-word
na 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 .