如何使“reverse-i-search”历史记录在 irb 或 pry 控制台中使用 fzf

fan*_*ing 5 irb pry fzf

我环顾四周,无论如何找不到使用fzf在 irb 或 pry 控制台中搜索历史记录。有什么办法可以做到吗?

fan*_*ing 5

环顾四周,我发现命令完成与GNU Readline相关,然后我找到了Readline的纯 ruby​​ 实现,实际上让 fzf 在 pry 中工作非常容易RbReadline,我所做的就是RbReadline覆盖类方法,当我们在 pry 控制台中点击+rl_reverse_search_history时会触发该方法。CtrlR

我所做的总结:

  1. 安装 rb-readline

     gem install rb-readline
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改你的.pryrc添加这个

     require 'rb-readline'
    
     def RbReadline.rl_reverse_search_history(sign, key)
       rl_insert_text  `cat ~/.pry_history | fzf --tac |  tr '\n' ' '`
     end
    
    Run Code Online (Sandbox Code Playgroud)

将从rl_insert_textfzf 选择的结果插入到终端光标后。