3

I'm trying to set up my .inputrc to perform a backwards unix-word-rubout but I'm currently failing at doing so.
I have M-w mapped in my .inputrc.

this does not work:

"\eu": universal-argument
"\ew":  "\eu-1\C-w"

nor does this:

"\ew":  "\e-1\C-w"

not even doing it interactively in the shell by pressing M-- followed by C-w works, i.e. it keeps deleting words on the left of the cursor.

PS I know there are other kill/rubout readline commands but i really would like to have the C-w behavior of killing words using space as separator, just backwards.

2
  • You want to delete the word to the right of point? \ed kill-word
    – bsd
    Mar 28, 2012 at 11:04
  • @bdowning nope, that doesn't quite use the same separator, kill-word is more granular. Mar 28, 2012 at 12:44

1 Answer 1

2

In brief, add the following lines to ~/.inputrc:

"\ew": kill-region
"\ea": '\e \C-] \ew'

where w and a characters could be changed to your will.

How does it work

Let's assign a key sequence to the kill-region readline command, for example Alt-w

"\ew": kill-region

then let's assign the following macro to another sequence, say Alt-a:

"\ea": '\e \C-] \ew'

that performs the following actions:

\e<SPACE>:

set the mark where the cursor is

\C-]<SPACE>:

search for a space and move the cursor there

\ew:

kill the region between mark and cursor

7
  • I think you want character-search-backward, i.e. change \C-] to \e\C-].
    – Mikel
    Mar 28, 2012 at 15:51
  • @Mikel: no, I understand that with "backward" the OP means "in the reverse direction with respect to \C-w", and given that \C-w kill from the cursor to the previous space on the left, I built an analogous function to kill from the cursor to the next space on the right.
    – enzotib
    Mar 28, 2012 at 15:58
  • yep @enzotib is right. Poor choice of words on my part. I'll try enzotib's solution and let you guys know. Mar 28, 2012 at 16:05
  • Ah. OP wants kill-word, but using space as delimiter. :-)
    – Mikel
    Mar 28, 2012 at 16:12
  • yeah, it works but has an issue with EOL, in that since it searches for a space it cannot find the end of line. But I guess there's no way around it, right? Mar 28, 2012 at 16:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .