I use fzf when I'm on the command-line. To configure GHCi to use fzf instead of haskeline's built-in search:
Put the following in
bind: ctrl-r : f z f return
and the following in
:def fzf _ -> pure $ ":!cat $HOME/.ghc/ghci_history | fzf --height 25"
The downside is this will rebind
C-r for all haskeline applications, such as
Dhall, Egison, Futhark, PureScript.