ターミナルで誤ってCtrl-Sを押した後にフリーズを解除するにはどうすればよいですか?


729

これは私にとって非常に頻繁に発生する状況です。Ctrl-S端末で(別の意図で)を押すと、端末との対話(入力または出力)がフリーズします。これはおそらく一種の「スクロールロック」などです。

この後、ターミナルをフリーズ解除するにはどうすればよいですか?

(今回はapt-shellbash内部で作業していました- urxvtどちらが特別な処理を担当するのかわからないCtrl-SC-r通常のreadline でコマンド履歴を逆方向に検索していましたが、 「前方いつもと歴史を通して-少なくともEmacs--にC-s123。)が、それは、端末がフリーズする原因と過去のものを表示するには、まあ、スクロール/ページングがまだの端末で動作しますが、相互作用なしプロセスがそこで実行されます。)


23
私は働いていたvimので、Ctrl-Sを押して編集内容を保存しました。Uh-ohXD
ADTC

4
そもそもなぜそれが存在するのですか?
neverMind9

回答:


862

Ctrl-Q

これを完全に無効にするにstty -ixonは、起動スクリプトを使用します。任意のキーで物事が再び流れるようにするには、を使用しますstty ixany

ps:これを行うのは端末でもシェルでもありませんが、OSの端末ドライバーです。


8
ありがとうございました!ところで、そこに彼らが提案しましたCtrl-C。それも機能しますか?(そして別の場所で、彼らはCtrl-Qあなたと同じように提案しました。)
imz-イワンザカリヤシェフ

23
Ctrl-Cは機能しますが、割り込み信号も送信しますが、これは通常は必要ありません。(ところで、これらのものに使用されているキーは、すべてを通して設定可能sttyです。)
ak2

2
私のApple] [クローンでこの組み合わせを試したのを覚えています。それはそこでも機能しました- Ctrl-SそしてCtrl-Q再開しました。
sashoalm 14年

19
ああ、助かった !!これは何年も私を悩ませていました。なぜVIMがこれを実行するのではなく、保存のネイティブショートカットとしてこれを実装していないのかはわかりません。VIMを除くほとんどすべてのアプリケーションに適用できるCTRL + S(ショートカットの保存)の自然な使用により、凍結されたVIM画面である刑務所からの脱出があります。
クラングプライム

8
@SanuelJackson Ctrl-S「ショートカットを保存」は、vimを除くほぼすべてのデスクトップアプリケーションに適用できます。Emacsを除きます。そしてナノ。そして、ターミナルでフロー制御のためにすでに使用されているという理由だけで、ターミナルで実行できる他のすべての「アプリケーション」。Ctrl-Alt-FNショートカットを使用したLinuxデスクトップアプリケーションが見つからないのと同じ理由は、システムで既に使用されているためです。
ゲルロス

384

Ctrl- Q確かに答えです。私はak2の正解の余白に収まるには長すぎるこの小さな歴史の中で投げることになると思った。

暗黒時代に戻って、ターミナルは、長いワイヤーまたはモデム付き電話回線を介してリモートデバイス(テレタイプは電信キーよりも操作がはるかに簡単だったため、もともとは別のターミナル)に接続する大きな機器でした。Unixが開発された頃には、ASCIIコードはすでに十分に確立されていました(ただし、IBMからの競合するEBCDICコードはまだ考慮すべき力でした)。

最古の端末は、受信したすべてのキャラクターの印刷記録を保持していました。文字が到着する限り、少なくともプリントヘッドが文字を入力するよりも速くはありません。しかし、CRTベースの端末が使用可能になるとすぐに、CRTに収まるのは約25行のみであり、80文字の25行が十分なRAMを表しているため、画面の上部からスクロールした文字にRAMを追加することを真剣に考える人はいませんでしたスクリーン。

そのため、送信側が一時停止してリーダーが追いつくように通知するために、何らかの規則が必要でした。

7ビットASCIIコードには、制御文字専用の33個のコードポイントがあります(0〜31および127)。それらのいくつかは、以下のような本当によく設立目的、持っていたNUL、(白紙テープスレッディング、ギャップ、およびスプライスのためのリーダー)DEL(全7つの穴を打ち抜いて示された紙テープ上の文字「消さ」)、 BEL(鼎!)、 、CRLFとしTAB。が、4は(端末装置自体を制御するために明示的に定義されたDC1DC4別名はCtrl + Qは、Ctrl + R、Ctrlキー+ SとCtrl + T)。

私の最良の推測は、一部のエンジニアが(ニーモニックのとおり)、「停止」の「S」および「継続」の「Q」はそれほど悪くないDC3DC1考え、「送信を停止してください」および「OK」 、今すぐ送信を続けてください」。

その慣習でさえ、UnixがBell Labsに巣立って世界に出て行く頃にはすでに確立されていました。

この規則はソフトウェアフロー制御として知られており、実際のシリアルデバイスでは非常に一般的です。正しく実装するのは容易ではありません。通信チャネルで他の目的にこれらの文字を使用することができず、保留中の受信文字よりも先にStop信号を処理して、受信側が送信できる以上の送信を避ける必要があるためです。扱う。

実用的な場合は、フロー制御のためにシリアルデータストリームから帯域外の追加信号を使用することをお勧めします。追加の信号線を使用できる直接配線接続では、使用中のハードウェアハンドシェイクが見つかり、これらの文字が他の用途に使用できるようになります。

もちろん、今日のターミナルウィンドウは実際の物理シリアルポートを使用しておらず、スクロールバーがあり、ソフトウェアハンドシェイクはまったく必要ありません。しかし、慣習は維持されます。

リチャード・ストールマンは、emacsの最初のリリースでCtrl + Sをインクリメンタル検索にマッピングすることについて苦情を受け、7ビットのソフトウェアフロー制御接続に依存しなければならないユーザーには共感的ではなかったという主張を思い出します。


2
ありがとうございました。非常に興味深い...私は疑問に思っていました:いったい誰が、一般に(現在)Quitに使用されている "Q"でプロセスを続行することを選択するのか...
Peter.O

13
その歴史の一部に感謝します。最近、私が管理しているターミナルエミュレータでデフォルトでフロー制御を無効にしましたが、まだ使用しているUnixの伝統主義者からの抗議の後、かなり迅速に元に戻す必要がありました。代わりにixanyビットを設定するので、少なくとも^ Qを知らずに^ Sを押す人が動けなくなることはありません。
ak2

3
@RBerteigバックスペースと削除について似たようなことを知りました。バックスペースは正式に^ Hで、削除は^?です。Emacs開発者のような一部の人々(再びストールマン?)は、ヘルプなどのショートカットのような一般的な目的で^ Hを使用できるようにしたいと考えていました。エスケープシーケンス^ [[3〜またはそのようなものは、^?を置き換えるために作成されました。バックスペースが古い削除文字^?になりました。実際、termsでそれらのキーを再マッピングするためにLinuxディストリビューションにncursesがパッチされているのを見てきましたが、FreeBSDのncursesはパッチされていないため、バックスペースが機能しない迷惑な混乱が生じます。
ペンギン359

23
紙テープとASR33を初めて使用するまで、DELが他の制御文字とグループ化されるのではなく、なぜコード127を持っているのか疑問に思っていました。すべての穴をパンチする効果があることを認識したら、それは以前にパンチされたキャラクターを打ち消して削除することができることを意味しました、それは理にかなっています。
-RBerteig

3
@SanuelJacksonよく調べてからしばらく経ちましたが、Windowsに同梱されているデフォルトのvimrcは長年<Cs>を ":update"にマッピングしていました。また、過去にgvimのいくつかのディストリビューションでも見たことがあります。ただし、ターミナルでvimを使用している場合、この履歴は依然として非常に重要です。最新のターミナルエミュレーターは引き続きフロー制御キーを実装しているため、vimがそれらをマップしても、各ユーザーが受け入れられた回答で説明されているようにフロー制御を無効にしない限り、それらは表示されません。
ドリュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.