【问题标题】:How to get unstuck in Ruby irb? [duplicate]如何摆脱 Ruby irb 的困扰? [复制]
【发布时间】:2012-11-06 23:08:58
【问题描述】:

可能重复:
Is there a way to get out of a “hung” state in IRB?

我正在使用 IRB。当我编码时,我注意到当行以“/”结尾时,我会“卡住”:

irb(main):057:0/

当这种情况发生时,我无法执行任何操作,无法退出、定义事物等。它不断循环回到以“/”结尾的行。

但是,当一行像这样结束时:

irb(main):056:0>

似乎一切正常。如果需要,我可以退出、定义任何内容等。

当一行以“/”结尾时,我怎样才能解开?

【问题讨论】:

  • 好问题,我通常只是杀死进程:x 另外,恭喜。

标签: ruby irb


【解决方案1】:

您可以按 ctrl + c 然后按 return 来返回 IRB 的提示。

【讨论】:

  • Yuuup!有效。谢谢!!
  • 确保接受亚历克斯的回答。
【解决方案2】:

当您在 IRB 中“卡住”时,通常是因为不匹配的结束分隔符,例如单引号与双引号不匹配。

对于这个特定的问题,这是由于位于 Regexp 对象中,其中分隔符是您按下的“/”。这与拥有一个未关闭的开放式报价在操作上是相同的。一旦你结束正斜杠以关闭正则表达式,你会发现自己在下一个提示符下,你会在光标位置之前的行上看到一些来自 IRB 的返回。因此,简单地关闭分隔符是合适的。

也许,这只能是一次钓鱼探险,你的意思是忽略行尾的返回,而当你应该使用反斜杠('\')时,你却使用了正斜杠?

Control-C 有点笨拙,因为它试图发送中断。 Control-D 是 EOD 或 End of Data* 字符,因此通常会让 IRB 知道您已完成行(或流)上的数据输入。

这不仅仅适用于 IRB,而且可以让您摆脱一些非常困难的地方,而无需终止正在运行的应用程序。允许您优雅地退出,甚至继续运行程序,并纠正您的错误,例如 IRB 中有时会发生的错误。

当然,如果失败了,那么试试control-c,它可能会很重,足以让你通过。


*historicallyEOT 或“磁带结束”或“传输结束”。将其与输入流中的“数据”相关联可能只是我的助记符。

【讨论】:

    【解决方案3】:

    这是由于当行以未终止的正则表达式结尾时按 Enter 造成的。您可以像 alex 所说的那样使用 Ctrl+C,或者通过以另一个斜杠结尾来完成正则表达式(或者,如果您以 %{ 开始正则表达式,则以 } 结束,等等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多