Question

I know GHCi supports Readline, and keybindings such as ^W and ^U work as expected.

I do wonder whether ghci support customization of keybindings the way Bash deals with inputrc.

Was it helpful?

Solution

What is your GHC version? GHCi stopped using readline and started using libedit around 6.10 and haskeline around 6.12.

libedit can be configured in ~/.editrc; similarly, Haskeline has ~/.haskeline. For example, I have

# ~/.editrc (for libedit)
edit on
bind ^R em-inc-search-prev
bind ^S em-inc-search-next
bind ^[[5~ ed-search-prev-history
bind ^[[6~ ed-search-next-history

to match my

# ~/.inputrc (for readline)
"\e[5~": history-search-backward
"\e[6~": history-search-forward

OTHER TIPS

@ephemient's answer above also helps with newer builds of MySQL which have switched from readline to libedit. I used

$ ~/.editrc:
bind ^[[A ed-search-prev-history
bind ^[[B ed-search-next-history

to match my old version which used to work inside MySQL:

$ ~/.inputrc:
"\e[A":history-search-backward
"\e[B":history-search-forward

(my only annoyance now is that if I just want to scroll and not search, I have to type a "." first to match every line).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top