0

我使用 rvm 安装了 ruby​​,并在 RoR 项目中使用它。问题是,当我pry在该项目中开始时,我无法使用 ctrl-arrows 快捷方式>而不是左/右获取单词,而是打印工件,例如;5Dor ;5C。当我pry在那个项目之外打电话时,一切都很好。ctrl-arrows 也适用于常规控制台。我已经尝试使用 readline 支持重新安装 readline 和 ruby​​。我还能做什么?

4

2 回答 2

6

我发现了问题。我rb-readlineGemfile. 一旦我删除它,问题就消失了。

于 2012-12-31T13:00:07.453 回答
4

解决此问题的一种方法是.inputrc在您的主目录中创建一个包含以下内容的:

"\033[1;5C": forward-word
"\033[1;5D": backward-word

我在 bash 和 pry 上都遇到了这个问题,上面为我解决了这个问题。

请注意,这"\033[1;5C"似乎因您的操作系统或您正在使用的终端软件而异。在 OSX 上,您可以通过转到 Terminal.app 的“设置”对话框、选择配置文件并单击“键盘”选项卡来查看按 ctrl-right 时实际生成的指令:

  • 在雪豹上,默认值为\033[5D
  • 在 Mavericks 上,默认值为\033[1;5C

发生此问题是因为您的 shell 无法识别您的终端发送的指令(?请耐心等待 - 以下主要是基于我的谷歌搜索的猜测)

以下是这些代码的分解方式:

\033是 ASCII转义字符的八进制表示。它的意思是“将以下内容解释为操作终端的说明——而不是文本”。它还可以根据上下文以其他方式表示,包括:

  • 十六进制为^[(例如^[[1;5D
  • 在 bash 中作为\e(例如\e[5D\e\e[D

我认为1just 的意思是“在与光标相同的行上执行此操作,并且5D旨在解释为“向前跳过一个单词”。只是将;两条指令分开。

我的猜测是,这个问题来自一些 shell 或实用程序,要么本身不理解5D应该意味着“跳过一个单词”,要么不支持使用;. 添加一个.inputrc填充空白并使一切正常:)

于 2014-09-02T03:08:21.047 回答