Bind ctrl-r to search history if the commandline isn't empty

This is super cheesy.

One of the most common feature requests we get is "control-r must
search", even tho just using history-search-backward via e.g. up-arrow
is perfectly capable. The only real difference is that ctrl-r search
in other shells allows editing the search term by default, while we
stop the history search and edit the new commandline in those cases.

So, since the major problem is muscle-memory on ctrl-r,
let's just use that!

This makes ctrl-r do nothing on empty commandlines, and do
history-search-backward otherwise, so the basic flow of "press ctrl-r
to start history search, enter your search term, press ctrl-r to cycle
through matches" just works (except the first ctrl-r is useless and it
doesn't show anything).

See #602.
This commit is contained in:
Fabian Homborg
2020-09-30 17:25:38 +02:00
parent 7990bd3046
commit 4bfda47449
2 changed files with 5 additions and 0 deletions

View File

@@ -98,6 +98,9 @@ function fish_default_key_bindings -d "Default (Emacs-like) key bindings for fis
bind --preset $argv \ed kill-word
# Let ctrl+r search history if there is something in the commandline.
bind --preset $argv \cr 'commandline | string length -q; and commandline -f history-search-backward'
# term-specific special bindings
switch "$TERM"
case 'rxvt*'