Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails pry:ctrl箭头上的工件(ubuntu)_Ruby On Rails_Ruby_Readline_Pry - Fatal编程技术网

Ruby on rails pry:ctrl箭头上的工件(ubuntu)

Ruby on rails pry:ctrl箭头上的工件(ubuntu),ruby-on-rails,ruby,readline,pry,Ruby On Rails,Ruby,Readline,Pry,我使用rvm安装了ruby,并在RoR项目中使用它。问题是,当我在该项目中启动pry时,我无法使用ctrl-arrows-shortcuts>而不是左/右获取单词,它会打印工件,如;5D或;5C。当我在那个项目之外打电话询问时,一切正常。ctrl箭头在常规控制台中也起作用。我已经尝试用readline支持重新安装readline和ruby。我还能做些什么呢?我发现了问题所在。我的Gemfile中有rbreadline依赖项。一旦我删除了它,问题就消失了。解决这个问题的一种方法是在您的主目录中创建

我使用rvm安装了ruby,并在RoR项目中使用它。问题是,当我在该项目中启动
pry
时,我无法使用ctrl-arrows-shortcuts>而不是左/右获取单词,它会打印工件,如
;5D
;5C
。当我在那个项目之外打电话询问时,一切正常。ctrl箭头在常规控制台中也起作用。我已经尝试用readline支持重新安装readline和ruby。我还能做些什么呢?

我发现了问题所在。我的
Gemfile
中有
rbreadline
依赖项。一旦我删除了它,问题就消失了。

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

"\033[1;5C": forward-word
"\033[1;5D": backward-word
我在bash和pry中都遇到了这个问题,上面的代码为我解决了这个问题

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

  • 在雪豹上,默认值为
    \033[5D
  • 在Mavericks上,默认值是
    \033[1;5C
发生此问题是因为您的shell无法识别您终端发送的指令(?请容忍我-以下主要是基于我的谷歌搜索的猜测)

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

\033
是ASCII的八进制表示法。它的意思是“将以下内容解释为操作终端的指令-而不是文本”。它也可以根据上下文以其他方式表示,包括:

  • 以十六进制表示为
    ^[/code>(例如
    ^[[1;5D
  • 在bash中作为
    \e
    (例如
    \e[5D
    \e\e[D
我认为
1
的意思是“在光标所在的行上执行此操作,
5D
的意思是“向前跳过一个单词”。
只是将两条指令分开


我的猜测是,这个问题来自于一些shell或实用程序,它们不是天生理解
5D
的意思是“跳过一个单词”,就是不支持使用
编写指令。添加一个
。inputrc
可以填补空白并使一切正常工作:)

知道为什么会出现这种情况吗?我遇到了这个问题e同样的问题,但不确定如何解决?这个bug似乎是原因:这个拉请求解决了它:)