Is there a way of using ctrl-r after typing part of command in bash?
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
Binding it all to a single key
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.
Making it permanent
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.
Save four strikes:
Avoid a second Ctrl-R
by adding to your .bashrc
(or to your .inputrc
if you prefer):
bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r
This will map ALT-R to CTR-A CTR-R CTR-Y CTR-R
Description:
- ALT-R: the binding key. Another good option is
\C-xr
(CTR-X CTR-R) - CTR-A: Go to the begin of the line (memorizing what is written)
- CTR-R: Start the reverse search
- CTR-Y: Paste what CTR-A memorized as part of the search
- CTR-R: Triggers the reverse search with the characters so far