我在 JRuby 下的 Rails 控制台遇到了各种问题,包括
- 无提示符
- Tab完成不工作(文字标签被插入)
- 向上/向下箭头不浏览历史记录(
^[[A
或^[[B
分别插入) - 左/右箭头不移动光标(
^[[D
或^[[C
分别插入) - Home/End键不将光标移动到行的开头/结尾(分别代替
1~
或4~
插入);Ctrl+ a/ Ctrl+e虽然工作 - Ctrl+c杀死控制台而不是杀死我正在输入的行
- Ctrl+d在我点击之前没有任何效果Enter(然后执行我在Ctrl+d和Enter我的 Unix shell 之间输入的任何内容)。
我从 rvm 安装了我的 JRuby 解释器,如下所示:
rvm install jruby-1.6.8 --1.9
我的 Rails 项目是使用 Bundler(不是 rvm gemsets)管理的,所以我使用bundle exec rails c
. 有趣的是,除了/键和+需要一个新的提示行之前,rawirb
和bundle exec irb
上面的大多数问题都没有。HomeEndCtrlcEnter
我可以用准系统 Rails 复制这个问题Gemfile
:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'sqlite3'
我的外壳是zsh
,在 Ubuntu 12.04 64 位上。$JAVA_HOME
是/usr/lib/jvm/java-7-openjdk-amd64
,但是当我安装这个解释器时它可能仍然是 java-6,如果这很重要的话。
更新:一些修复
缺少提示字符显然是由Rails 控制台IRB.conf[:PROMPT_MODE]
设置为引起的。:NULL
对于常规irb
,我的设置为:RVM
(显然 rvm 在 中执行此操作~/.rvm/scripts/irb.rb
;我通过注释掉脚本排除了 rvm 导致此问题的可能性)。提供一个:PROMPT_MODE
值来~/.irbrc
解决这个问题。我想也许一个类似的问题是通过更改and导致Ctrl+ c/ Ctrl+问题,但它们都设置为默认值。d:IGNORE_SIGINT
:IGNORE_EOF
:USE_READLINE
通过设置为 true,可以修复 Tab 补全和箭头键。
这是我目前~/.irbrc
似乎可以解决上述问题的电流:
require 'irb/completion'
IRB.conf[:PROMPT_MODE] = :SIMPLE
IRB.conf[:USE_READLINE] = true
IRB.conf[:AUTO_INDENT] = true