我使用 rvm 安装了 ruby,并在 RoR 项目中使用它。问题是,当我pry
在该项目中开始时,我无法使用 ctrl-arrows 快捷方式>而不是左/右获取单词,而是打印工件,例如;5D
or ;5C
。当我pry
在那个项目之外打电话时,一切都很好。ctrl-arrows 也适用于常规控制台。我已经尝试使用 readline 支持重新安装 readline 和 ruby。我还能做什么?
问问题
419 次
2 回答
6
我发现了问题。我rb-readline
的Gemfile
. 一旦我删除它,问题就消失了。
于 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
)
我认为1
just 的意思是“在与光标相同的行上执行此操作,并且5D
旨在解释为“向前跳过一个单词”。只是将;
两条指令分开。
我的猜测是,这个问题来自一些 shell 或实用程序,要么本身不理解5D
应该意味着“跳过一个单词”,要么不支持使用;
. 添加一个.inputrc
填充空白并使一切正常:)
于 2014-09-02T03:08:21.047 回答