In bash, pressing Tab invokes the programmable completion feature and either (a) expands to a unique path or command matching what's typed or (b) a list of possible options.
Is it possible to undo the entire expansion made by pressing Tab?
Example:
- My current command is
ls application/views/
. - There are two possible expansions on that command:
helpers/
andscripts/
. - I type heTab, which expands to
helpers/
. - I realize I meant the other one
scripts
. - Now I have to delete the entire expansion "helpers/".
I usually just backspace over the entire path (helpers/
in this case), because I find striking readline undo Control+_ tedious. What I'd like is a single key sequence that deletes the full match of the expansion, regardless of any characters I initially typed and any spaces or slashes added to the end.
Running list of key sequences suggested by comments or my own read of the GNU reference. None of these accomplish the goal:
- Meta+b -- Moves back to the previous
/
or, but doesn't delete.
- Meta+Del -- Deletes one character, not the entire word.
- Meta+Backspace -- Moves back one character without deleting.
- Control+W -- Deletes the entire path, not just the expansion. So in my example, after pressing Tab, bash expands that to
ls application/views/helpers
, then when I press Control+W, bash deletesapplication/views/helpers
.
If relevant, I'm using the vi editing mode on a Gentoo Linux box. I've checked my configuration and I've not remapped any characters.
M-b
(<alt>+b).<ctl>W
M-<backspace>
.M-b
is move back one word.M-d
is delete one word forward.