我使用rvm安装了ruby,我在RoR项目中使用它。问题是,当我在该项目中启动pry
时,我无法使用ctrl-arrows快捷键>它不是左/右单词,而是打印工件,如;5D
或;5C
。当我在该项目之外调用pry
时,一切正常。 ctrl-arrows也可以在常规控制台中使用。我已经尝试使用readline支持重新安装readline和ruby。我还能做些什么?
答案 0 :(得分:6)
我发现了问题。我的rb-readline
中有Gemfile
依赖项。一旦我删除它,问题就消失了。
答案 1 :(得分:4)
解决此问题的一种方法是在主目录中使用以下内容创建.inputrc
:
"\033[1;5C": forward-word
"\033[1;5D": backward-word
我有bash和pry都有这个问题,上面为我修好了。
请注意,"\033[1;5C"
似乎会因您的操作系统而异 - 或者可能是您正在使用的终端软件。在OSX上,通过转到Terminal.app的“设置”对话框,选择配置文件,然后单击“键盘”选项卡,可以看到按ctrl-right实际生成的指令:
\033[5D
\033[1;5C
发生此问题的原因是您的终端发送的指令无法被您的shell识别(?请耐心等待 - 以下内容主要是基于我的Google搜索猜测)
以下是这些代码的分解方式:
\033
是ASCII Escape character的八进制表示。它意味着“将以下内容解释为操纵终端的指令 - 而不是文本”。它也可以根据具体情况以其他方式表示,包括:
^[
(例如^[[1;5D
)\e
(例如\e[5D
或\e\e[D
)我认为1
只是意味着'在与光标相同的行上执行此操作,而5D
旨在被解释为'向前跳过一个单词'。 ;
只是将两条指令分开。
我的猜测是,问题来自某些shell或实用程序,要么本身不理解5D
应该表示'跳过一个单词',要么不支持使用;
编写指令。添加.inputrc
填充空白并使一切正常工作:)