In bash the Ctrl+r command is very useful, I type Ctrl+r whatever
and it searchs my history for commands containing the word whatever
. But if I type whatever
and realize that I would like search that word and hit Ctrl+r nothing happens.
Is there a way hitting a key and having it behaving as if I had typed Ctrl+r whatever
instead of whatever
Ctrl+r?
I have the following in my .inputrc
:
"\C-p": history-search-backward
but this only works if the beginning of the line is the same.
You can search bash's history using what you have already typed easily.
Suppose you have just typed curl -I http://superuser.com
and you forgot to type Ctrl+r first:
$ curl -I http://superuser.com
If you want to do an i-search on your history, go to the beginning of line first (Ctrl+a), enter i-search (Ctrl+r) and type Ctrl+y. This should search using the contents of the whole text you already typed:
(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq
Alternatively, you can use Ctrl+w instead of Ctrl+y to search using just the first word of the text you just typed:
(reverse-i-search)`curl': curl -I http://superuser.com/faq
If you want to do all this in one keystroke, you can bind a single key to a keyboard macro. If you want to use, say, F12 run:
$ bind '"\e[24~":"\C-a\C-r\C-y"'
That will last for the session.
Just define the macro in your ~/.inputrc
:
"\e[24~":"\C-a\C-r\C-y"
Note that here we omit the single quotes.
You might find this answer useful.
c-r
typing c-y
does not paste anything there. If I type c-y
by itself just pastes the text, so I cannot combine the two commands... — Nov 05, 2012 at 14:49 "\C-xr": "\C-a\C-r\C-y"
and it works very nice! Thanks for this answer. — Nov 06, 2012 at 03:04 control+a control+r control+y
thing! Thanks this answer is always here! :) — Nov 25, 2017 at 21:13 External links referenced by this document: