Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

How to configure zsh such that Ctrl+Backspace kills the word before point? How to achieve that Ctrl+Delete kills the word after point?

I use urxvt as terminal emulator.

share|improve this question
    
Firstly, you should define "word". Is it only alphabetic characters? All non-space characters? –  Mikel May 7 '11 at 9:19
    
word like it is used in emacs terminology –  student May 7 '11 at 9:31
add comment

2 Answers 2

up vote 4 down vote accepted

I'll focus on Ctrl+Delete first.

The zsh command to delete a whole word forwards is called kill-word. By default it is bound to Alt+D.

How to make Ctrl+Delete do it too depends on which terminal emulator you are using.

On my system, this works in xterm and Gnome Terminal:

bindkey -M emacs '^[[3;5~' kill-word

and for urxvt, you should do:

bindkey -M emacs '^[[3^' kill-word

If that doesn't work, try typing Ctrl+V Ctrl+Delete to see what the value is on your system.

You could even add both of those together to your .zshrc, or use the output of tput kDC5 instead of hard-coding the sequence.

Ctrl+Backspace seems harder.

On my system, pressing that is the same as pressing just Backspace.

If yours is the same, I think your best option is to use Alt+Backspace or Ctrl+W instead.

share|improve this answer
    
I use urxvt as terminal emulator –  student May 7 '11 at 9:32
    
Ctrl + Backspace doesn't work –  student May 7 '11 at 9:33
    
You need ^[[3^ for urxvt. Ctrl+V Ctrl+Delete would show you this. –  Mikel May 7 '11 at 9:39
    
Thanks, I have added bindkey '^[[3^' kill-word bindkey and '^H' backward-kill-word to my .zshrc. Now it works! –  student May 7 '11 at 10:45
    
@user5289: Ah, sorry, we misunderstood each other. I don't think ^H or ^? will work for Ctrl+Backspace. In fact it seems such a binding is not possible. Alt+Backspace or Ctrl+W might be adequate replacements. –  Mikel May 8 '11 at 3:43
add comment

I've got this in my .Xresources:

URxvt.keysym.C-BackSpace:       \033[33~

and that in my .zshrc:

bindkey -M main -M viins -M vicmd   '^[[33~'    backward-kill-word

This kills each whitespace seperated word. Note that '^[' is the Escape character. You have to xrdb -load .Xresources, open a terminal and then hit ^V followed by ^BackSpace.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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