1

irbWindows コマンド ラインから使用した後、 +を^Z使用して戻ることができません。CTRLZ

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

私が間違っているかもしれませんが、その原因は、control+Z が実際に何であるかを理解していないことにあると思います。「切り替え」ではなく、「停止」です。さらに、これらのコンボはシェル自体によって処理されるため、IRB や Ruby に関するものではありません。

すなわちを参照してください。https://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application

Linux ライクな環境では、control+Z は現在の子を一時停止し、stdin/stdout から「リンク解除」するので (私が思うに)、戻ってシェルと対話できるようになります。同様に、control+C を押すと、シェルは現在の子などにシグナルを送信します。

Windows では、これは単純に実装されていません。control+whatever を押すと、この文字が現在のアプリケーションの stdin に送信されます (以下で説明する 2 つのケースを除く)。これが、control+Z を押す^Zとメタ文字が送信される理由であり、これが IRB がそれに反応して、あたかも何か奇妙なことを書いたかのようになる理由です。

Linux 環境から Windows に移植された多くのユーティリティ (シェルを含む) は、一部の動作をエミュレートするように特別に調整されています。例を参照してください: https://superuser.com/questions/580816/why-can-i-only-suspend-using-ctrl-z-in-screen-under-cygwin -- したがって、Cygwin のコンソールはそれをサポートしているようです.

ただし、Windows OS の「ネイティブ」コンソールは、control+Z をサポートしていません。実際にはほとんどコンボをサポートしていません。この MSDN の記事によると、 control+C と control+Break のみがサポートされており、それらはまったく同じ意味です。上記の 3 番目のコンボは、キーボードからは使用できず、コンソール ウィンドウが標準の [X] ボタンで閉じられたときに使用されます。

于 2014-02-28T13:01:19.403 に答える