-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Description
Fish version: 3.6.1
I just migrated from zsh to fish and was generally very happy with it. However, one feature I am missing a lot was the ability to type search patterns in the "reverse-i-search" (aka "history-pager" in fish, bound to C-r by default). Although this feature needs to be enabled by binding history-incremental-pattern-search-backward
as described here, I usually have it bound when configuring my zsh.
Put simply, this feature enables one to type the *
as a wildcard during the incremental search session, which matches against arbitrary string. For example, input A*B
matches string AwhateverinbetweenBandpossiblemoreafterwards
.
Why is this feature so useful? Let me demonstrate a common use case. I typically have a lot of curl
commands in the history. Typically, I have quite a number of varying options between the curl
command and the <url>
. However, when I am trying to recall a specific history entry, I usually only remember the two pieces of information: curl
and the domain name I want. This is when I would search for stuff like curl*google
and hope the results to be narrowed down significantly.
Now without this feature, what I have to do is to type C-r curl
, scroll through the myriads of irrelevant history, and hope to find what I want somewhere. If that fails, I may have to fall back to running history search curl | grep google
, which is also quite a lot of keystrokes.