112

How can I delete a word backward at the command line? I'm truly used to some editors deleting the last 'word' using Ctrl+Backspace, and I'd like that functionality at the command line too.

I am using Bash at the moment and although I could jump backward a word and then delete forward a word, I'd rather have this as a quick-key, or event as Ctrl+Backspace.

How can accomplish this?

155

ctrlw is the standard "kill word" (aka werase). ctrlu kills the whole line (kill).

You can change them with stty.

-bash-4.2$ stty -a
speed 38400 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = <undef>;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
-bash-4.2$ stty werase ^p
-bash-4.2$ stty kill ^a
-bash-4.2$

Note that one does not have to put the actual control character on the line, stty understands putting ^ and then the character you would hit with control.

After doing this, if I hit ctrlp it will erase a word from the line. And if I hit ctrla, it will erase the whole line.

  • Using the stty command I attempted to assign the "kill word" to Ctrl+BckSpc by typing stty werase followed by Ctrl-v Ctrl-Backspace. This inserts the literal Ctrl-Backspace character as the argument for stty werase. Unfortunately it does not require typing Ctrl-Backspace to delete the word but works with just the Backspace key. So I would like to second the request of @terdon to learn how to do this. To reset the werase to default, use stty werase Ctrl-v Ctrl-w. – Timothy Martin Oct 10 '13 at 7:26
  • @TimothyMartin I'm a little stuck on how to do ctrl-backspace. Backspace is generally sent as either ctrl-h or ctrl-?, so ctrl-backspace would somehow be ctrl-ctrl-backspace. I did try to figure out if something different was sent, but putty, at least, just sends backspace when you type ctrl-backspace. – kurtm Oct 10 '13 at 14:13
  • 3
    ctrl + w effectively deletes the word but it also copies to the clipboard, erasing anything you had stored (or pushing it down?). – Elijah Lynn Dec 28 '15 at 17:44
  • 1
    esc - delete just worked :-) – Rene Wooller Nov 23 '16 at 5:53
  • 1
    that... is life changing. my god. – wired00 May 17 '18 at 1:21
25

You can also do this with CtrlW.

Another option is to set your own shortcut but this will depend on the terminal emulator you are using. For xterm and rxvt and maybe others, add this line to your ~/.inputrc (create the file if it does not exist):

## rxvt, xterm
"\b":backward-kill-word

gnome-terminal and its ilk seem to have AltBackspace by default but apparently require you to patch readline() in order to get CtrlBackspace.

Also see:

23

Alt+Backspace works for me in bash and zsh.

-2

On Mac, you can use:

Fn+Delete

  • 1
    That deletes 1 character in front of the cursor, not 1 word behind – Dannid Oct 14 '16 at 18:45
  • Don't know if this is still relevant, but that would be <Alt> + <Backspace> on Mac. – Hassan Jan 15 '17 at 2:15

protected by Community Jul 4 '18 at 9:18

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.