【问题标题】:pry: artifacts on ctrl-arrow (ubuntu)撬:ctrl-arrow(ubuntu)上的工件
【发布时间】:2012-12-30 00:55:02
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby readline pry


    【解决方案1】:

    我发现了问题。我的Gemfile 中有rb-readline 依赖项。一旦我删除它,问题就消失了。

    【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

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

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

    我认为1 只是意味着'在与光标相同的行上执行此操作,而5D 旨在被解释为'向前跳过一个单词'。 ; 只是将两条指令分开。

    我的猜测是,这个问题来自一些 shell 或实用程序,要么本身不理解 5D 应该表示“跳过一个单词”,要么不支持使用 ; 编写指令。添加.inputrc 可以填补空白并使一切正常:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多