如何在Git Bash中正确使用irb和rails控制台?

4
我正在使用Windows 7上的64位gitbash ver 2.9.0,它使用mintty版本2.0.3。大多数情况下,gitbash shell似乎工作正常。您可以像使用任何bash shell一样使用箭头键等,并且它们的执行效果与预期相同,能够滚动查看以前的命令等。然而,在使用irb或rails console(运行irb)时,它非常不稳定。向上箭头键不会滚动查看之前的命令,而是将光标移动到屏幕上并将可能是向上箭头控制代码输入到输入缓冲区中。此外,必须使用^ C而不是^ D退出irb。^ D什么也不做,只是进入输入缓冲区(如果我键入^ D然后^ C,则由于^ C退出irb,然后由于^ D退出gitbash)。

我在这个问题上找不到太多其他的报告,而我发现的一点点也有些过时。我尝试了这篇文章中提供的解决方案:在Windows机器上,IRB(Git Bash控制台)中退格键和箭头键无法使用,但它们并没有改变行为。

有人找到了一个合法的解决方案吗?


ruby -S irb 怎么样? - VonC
此外,http://gorbikoff.com/tag/ruby-on-windows/(不包括git bash)也是一个很好的参考。其中包含了https://dev59.com/xFjUa4cB1Zd3GeqPSYgF#10253338的内容。 - VonC
1
@VonC 我已经尝试过 ruby -S irb,但它也无法正常工作。它有完全相同的问题。长远来看,我可能不得不采取像你链接中提到的更激烈的措施,但我不明白为什么 gitbash 不能正常工作。这似乎是一个非常普通的用例。我考虑尝试找到适用于 Windows 上 gitbash 的 rlwrap 版本... - lurker
1
在Git for Windows v2.8.1中遇到了相同的问题。运行$ ruby -v时,它会识别已安装的Ruby:ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mingw32]。但是当输入irb时,它会出现问题:切换到检查模式。在标准的Windows命令提示符(Windows + R + cmd)中没有问题。 - belgoros
3个回答

4

git bash终端仿真器(mintty)与Windows控制台程序不太兼容。因此,您可能需要寻找一个包装器,它可以运行控制台程序(例如irb.cmdpython.exe等),然后与git bash进行交互。

具体来说,一旦在git bash的$PATH中有wintpy.exeirb,您就可以设置一个别名如下

$ alias irb='winpty "$(which irb).cmd"'

请注意,Ruby Windows安装程序默认提供了两个irb:一个是传统的bash脚本irb,另一个是Windows批处理脚本irb.cmd。只有后者能与winpty技巧一起使用。


0

0
非常感谢krim!在学习了add-.cmd-trick之后,我尝试了同样的方法来处理rails console (bin/rails c),最终得到了一个~/scripts/rails_ bash脚本。
#!/usr/bin/bash
winpty rails.bat "$@"

现在我可以运行rails_ c或者rails_ db等命令。


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