Note that this will work in the terminal and the default emacs mode (which you are using if Ctrl+W deletes the previous word for you). It will not work in bash's vi mode and will not affect vi/vim itself. This is, therefore, only a partial answer but the best this emacs user can offer.
This sort of thing is managed by the readline
library whose behavior can be controlled via ~/.inputrc
. Edit (or create, if it doesn't exist) ~/.inputrc
and add this line:
"\C-H":"\C-W"
Now, open a new terminal and it should work.
Explanation
The \C-H
is actually Control+BackSpace. You can see keycodes by pressing Ctrl+V then, the key you are after. You will see that BackSpace returns ^H
.
Now, it should be possible to bind Control+BackSpace to the bash function that deletes the previous word (backward-kill-word
or unix-word-rubout
) by using "\C-H": backward-kill-word
. However, I can't get that to work. It works perfectly well with different keys ("\C-E": backward-kill-word
, for example, makes Ctrl+E delete the previous word) but for some reason, I can't get it to work with BackSpace.
So, as a workaround, we just map Ctrl+Backspace to Ctrl+W which is already mapped to backward-kill-word
. So, when you press Ctrl+Backspace, that will be translated to Ctrl+W which, in turn, will send backward-kill-word
. I got the idea for this workaround from this SU post.