It seems like ctrl + W deletes backwards one word at a time. That's great, but I'd really really like that this works with ctrl + backspace like most other apps.
What's the best way to do this? I'd need the change to affect gnome-terminal commands, command line vim and GUI vim.
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: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
orunix-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 sendbackward-kill-word
. I got the idea for this workaround from this SU post.Use Alt+Backspace instead: it works just like Ctrl+Backspace and doesn't require any configuration.
Up until very recently, gnome-terminal emitted the same code on Backspace and Ctrl+Backspace, hence you cannot distinguish the two in your application.
This was fixed in vte-0.42, which is part of Gnome 3.18 released this autumn.
If you're using Wily, you can find updated packages in Gnome3 Staging.
[ for gnome-terminal ]
use
stty
tool, good for visualzing whatbash
keyboard shortcuts are binded.see your current bash keyboard shortcuts (my system output):
my output:
werase
is responsbile for deleting an entire word.running this will set
ctrl
+backspace
to erase a word when pressed.!note: this will set this option
only
to your current terminal/bash session. in order to apply thispermanently
you need to add previous command to.bashrc
file at the end of it.settings from .bashrc will be loaded every time you open gnome-terminal.
after this you are ready to go. enjoy.
[ for vim and neovim ]
just paste this in
init.vim
orvim.rc
:this will work in insert mode, ofc. thats the main point of defining this, for insert mode.
works in
neovim 0.5
andlower
versions and also instandard vim
.It works on my machine. Just make sure you use tmux from master and nvim from linuxbrew and control+backspace works in bash and vim too!
(Get bash from linuxbrew too)