Search code examples
bashcygwinreadline

Control-r reverse-i-search in Bash: how do you "reset" the search in Cygwin?


How do you tell Ctrl + R reverse-i-search to "reset itself" and start searching from the bottom of your history every time?

Background: When using reverse-i-search in Bash, I always get stuck once it is finished searching up through the history and it cannot find any more matches. Sometimes I hit Esc and re-invoke Ctrl + R a second time, expecting it to start a fresh new search from the bottom of my history. However, the "pointer" still seems to be at the previous place it left off in my history.

The problem is, I usually do not want this behavior. If I hit Esc, and then re-invoke Ctrl + R, I would like that to indicate it should restart from the bottom again and work its way back up.

I am using Cygwin on Windows, as none of the so-far mentioned solutions work.


This question was marked as a potential duplicate question. This question is not a duplicate for the following reasons:

  • The alternate question does not deal with Cygwin.
  • The alternate question does not deal with how to reset the search to its initial state (instead it deals with simply going backward in search as well as forward).

Solution

  • I never tried making this the default when hitting Esc, but Bash uses readline for input, which accepts Emacs-style keybindings by default, so you can go to the bottom using M-> (usually either by combining Meta/Alt and > or by following the Esc key with >).

    If M-> does not work because your terminal does not let you enter that, try ^G (Ctrl and G simultaneously). That is the "cancel" stroke in Emacs and usually works with readline too.