irb
Windows コマンド ラインから使用した後、 +を^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 ビットを使用しています。
私が間違っているかもしれませんが、その原因は、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] ボタンで閉じられたときに使用されます。