ruby 的“pry”编辑器中的键绑定开始表现得与“irb”中的行为不同,我想知道如何改变这种行为(感觉它应该是可配置的)。
具体来说,“Alt-B”和“Alt-F”会在我输入的行中向后或向前跳转并停在“单词边界”处。不同之处在于“pry”和“irb”现在对“单词边界”有不同的理解。
例如,如果我输入以下文本
a.b.c.d
然后在行末按下“Alt-B”,我期望光标返回到d
,然后到c
,然后到b
。在 中发生了这种情况irb
,但在 中pry
它一直返回到a
。
如果我输入
a,b,c,d
在这种情况下,按“Ctrl-W”应该会删除整个字符串,但这只在 中有效irb
。在 中,pry
它只会删除d
,然后c,
,然后b,
,最后a
。
另一个改变行为的键绑定似乎是Control-U
和Control-K
。它们过去分别用于删除到行首或行末的所有字符,但现在pry
control-u
会删除整行。
答案1
一种解决方法是在我的项目中安装rb-readline
。我的绑定现在可以按预期工作。
我注意到 ruby readline gem 似乎没有链接到系统 libreadline 库,并且它没有任何对其的INPUTRC
引用inputrc
。
然后我看了看pry 建议的 readline 库并意识到安装rb-readline
解决了我的问题。
抱歉,如果没有 Readline 或兼容库,您将无法使用 Pry。
可能的解决方案:
- 使用以下方法重建 Ruby 以支持 Readline
--with-readline
- 使用 rb-readline gem,它是 Readline 的纯 Ruby 端口
- 使用 pry-coolline gem,它是 Readline 的纯 ruby 替代品