ctrl-z不适用于终端窗口中的Interactive Ruby

时间:2013-12-28 16:50:27

标签: ruby shell ctrl

从Windows命令行使用irb后,我无法使用 CTRL + Z 返回^Z

irb(main):001:0> print 'hi'
hi=> nil
irb(main):002:0> ^Z
=> nil
irb(main):003:0*
irb(main):004:0*

看起来我开始了一些控制序列。我正在使用Ruby 1.9.3和Windows 7 Home Premium 64位。

2 个答案:

答案 0 :(得分:1)

我认为CTRL+Dexit应该有用。

答案 1 :(得分:1)

我可能错了,但我相信原因是你对控件+ Z实际上是什么的错误理解。它不是“切换”,而是“暂停”。此外,这些组合由shell本身处理,因此它不是关于IRB或Ruby。

见ie。 https://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application

在类似Linux的环境中,control + Z暂停其当前子节点并将其与stdin / stdout“取消链接”(我认为),这样您就可以再次返回并与shell进行交互。类似地,control + C使shell向当前子节点发送信号等。

在Windows上,这只是未实现。按控制+任何简单地将此字符发送到当前应用程序的标准输出(除了下面提到的两种情况)。这就是为什么按下control + Z发送^Z元字符的原因,这就是为什么IRB会对它做出反应,好像你写了一些奇怪的东西。

从Linux环境移植到Windows的许多实用程序(包括shell)都专门用于模拟某些行为。例如:https://superuser.com/questions/580816/why-can-i-only-suspend-using-ctrl-z-in-screen-under-cygwin - 所以看来Cygwin的控制台支持它。

但是,Windows操作系统的“本机”控制台不支持control + Z.它实际上几乎不支持任何组合。 According to this MSDN article仅支持+ C和control + Break,它们的含义完全相同。提到的第三个组合在键盘上不可用,在使用标准[X]按钮关闭consol窗口时使用。