在Windows机器上的IRB(Git Bash控制台)中,退格键和箭头键无法工作。

33

我刚在 Windows 机器上安装了 Ruby 1.9.2,但退格键和其他箭头键不起作用。这只发生在我打开 Git Bash 控制台的 IRB 时。但在 Windows 控制台上可以正常使用。请问有什么帮助吗?

注意:早期版本的 Ruby 在两个控制台上的 IRB 都可以正常工作。

6个回答

47

我也遇到了同样的问题。使用 --noreadline 选项运行 irb 可以解决这个问题:

irb --noreadline

2
这个解决方案非常有效。我修改了我的 irb 脚本,以便自动添加到命令行参数中。对于其他人来说,我的脚本位于 C:\Ruby\1.9.3\bin\irb,并在 require 'irb' 语句之后添加了 ARGV << "--noreadline" - Matt
7
你可以使用Bash别名将其设置为默认行为: alias irb='irb --noreadline' - Dmitriy Budnik
这很有帮助,但并没有真正解决问题,至少在我的情况下是这样。每当我想执行简单的操作时,这不是正确的方法。 - João Gouveia

9
您还可以在~/.irbrc中禁用readline。
IRB.conf[:USE_READLINE] = false

1
Neno上面的答案没有起作用,不确定为什么。但是将这个添加到.irbrc中对我有用。谢谢! - Kishore Masand

9

看起来您在编译Ruby时没有安装readline。因此,请安装readline,可能还需要安装readline-devel,然后重新编译Ruby。


3
通常情况下,它在Windows版本上预先编译好了。在Windows平台上正确重新编译并不是一件容易的事情。 - Matt
我在 Fedora 30 上遇到了同样的问题。重新编译后,它对我来说可以工作了。 - HarlemSquirrel

7

5
安装rb-readline gem。
gem install rb-readline

也没有帮助到我。 - Cyberwiz
安装 gem 后,需要通过将其添加到 Gemfilerequire 'rb-readline' 来进行引用。 - HarlemSquirrel

0
简短回答:我不得不做brew upgrade(根据我与一位ruby专家的交谈,情况似乎是“在trunk中有一个新的默认gem,Reline,它是readline回退。”)。然后irb中出现了新窗口和箭头键。接下来运行sudo gem install pry,出现新窗口,然后pry正常工作了。ruby --version 降到了2.3版本,于是我不得不运行brew install ruby。它说ruby 2.6已经安装并建议我运行 brew reinstall ruby,然后提醒我更新路径,我就这样做了,然后一切都正常了,ruby 2.6安装成功。编辑 - 现在rails出问题了..我会进一步更新。
更详细的回答:
我遇到了ruby irb箭头键无法使用的问题。
~/blah$ irb
irb(main):001:0> ^[[A^[[D^[[B^[[C

我在OSX上,几个月前没有这个问题

启动pry时也遇到了错误,pry<ENTER>显示“原因:找不到图像 - /usr/local/Cellar/ruby/2.5.0/lib/ruby/2.5.0/x86_64-darwin16/readline.bundle”

我尝试了brew link readline --force,但没有帮助,我尝试了irb --noreadline,但也没有帮助

但是对我有用的是来自Ruby专家的建议- brew upgrade

根据我与一位Ruby专家的交谈,显然情况是“Trunk中有一个新的默认宝石,Reline,它是readline的后备。”

然后我打开了一个新的终端窗口,$irb可以使用箭头键。

然后我执行了sudo gem install pry,打开了一个新的终端窗口,pry可以工作。

Ruby回退到了2.3,而实际上应该是2.6,我以为它是2.6

所以我运行了brew install ruby,它说ruby 2.6已经安装了,并建议运行brew reinstall ruby。所以我运行了brew reinstall ruby。打开一个新的终端窗口,它仍然是在2.3上。但是它建议将export PATH="/usr/local/opt/ruby/bin:$PATH"添加到.bash_profile(在osx上自动运行的文件)。我做了这件事,但它没有起作用,但在每个终端会话的开头手动执行PATH="/usr/local/opt/ruby/bin:$PATH"可以解决问题。

编辑-现在Rails出了问题,我会进一步更新。

我在更新路径后,运行了gem,它能正常工作了。

这个解决方案并不理想,因为它提供了两个版本的Ruby,因此当然也有两个版本的gem。

Last login: Fri Aug  9 16:02:48 on ttys001
have run /Users/apple/.bash_profile
~$ cd /usr/local/opt/ruby/bin
/usr/local/opt/ruby/bin$ ls
bundle  bundler erb gem irb rake    rdoc    ri  ruby
/usr/local/opt/ruby/bin$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/rubymac/rubyrailshelperscripts:/opt/X11/bin:/Users/apple/.vimpkg/bin:/usr/local/opt/fzf/bin
/usr/local/opt/ruby/bin$ which gem
/usr/bin/gem
/usr/local/opt/ruby/bin$ cd ~/
~$ /usr/local/opt/ruby/bin/ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin16]
~$ /usr/bin/ru
ruby      runocc.d  
~$ /usr/bin/ruby --version
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin16]
~$ 

简短回答- 我必须执行brew upgrade,(根据我与一位Ruby专家的交谈,情况似乎是“Trunk中有一个新的默认gem,Reline,它是readline的后备。”)然后在irb中出现了一个新窗口和箭头键。 然后sudo gem install pry,新窗口,pry就可以工作了。 ruby --version降至2.3,我必须执行brew install ruby,它说ruby 2.6已安装并要求执行brew reinstall ruby,然后它说要更新路径,我这样做了,然后就好了。 安装了ruby 2.6。 - barlop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接