1

从 Windows 命令行使用后irb,我无法^Z使用CTRL+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 位。

4

2 回答 2

1

我认为CTRL+Dexit应该工作。

于 2013-12-28T17:00:17.663 回答
1

我可能是错的,但我认为原因是您对 control+Z 的实际含义有错误的理解。不是为了“切换”,而是为了“暂停”。此外,这些组合由 shell 本身处理,因此与 IRB 或 Ruby 无关。

见即。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+whatever 只会将此字符发送到当前应用程序的标准输入(除了下面提到的两种情况)。这就是为什么按下 control+Z 会发送^Z元字符,这就是为什么 IRB 对它的反应就像你写了一些奇怪的东西一样。

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

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

于 2014-02-28T13:01:19.403 回答