端末で誤ってCtrl-Sを押した後にロックを解除する方法は?

端末で誤ってCtrl-Sを押した後にロックを解除する方法は?

これは頻繁に起こります。Ctrl-S別の意図で端末を押した後、端末とのやり取り(入力または出力)が停止します。これは「スクロールロック」などです。

後で端末の固定を解除するにはどうすればよいですか?

(今回はapt-shell内部bash作業を行ってきましたurxvt。どちらが特殊な処理を担当しているのかよくわかりません。通常どおり、Ctrl-Sreadlineを使ってコマンド履歴を逆に検索しましたが、次にC-r「戻りたい」と思いました。先に進む - 少なくともEmacsではC-s- (12サム)、ただし、これにより端末が停止する。さて、過去の内容を見るために端末でスクロール/ページングすることはまだ機能しますが、そこで実行されているプロセスと対話はありません。 )

答え1

Ctrl- を押すとQ固定が解除されます。

停止/開始スキームは次のとおりです。ソフトウェアフロー制御これは、シェルや端末エミュレータではなく、オペレーティングシステムの端末デバイスドライバによって実装されます。コマンドでstty設定できます。

完全に無効にするには、stty -ixonまたはなどのシェル起動スクリプトを挿入します。代わりにすべてのキーだけを再度流すにはを使用します。~/.bashrc~/.zshrcstty ixany

答え2

Ctrl——Qなるほど答えですね。私はこれについていくつかの歴史を説明すると思いましたが、余白に合わせるには長すぎました。ak2の正解

暗闇の時代に、ターミナルは長い電線やモデムのある電話回線でリモートデバイスに接続された大型デバイスでした(もともとは、テレタイプが全身キーより操作方法を習得しやすいため、他の端末でした)。 Unixが開発される頃、ASCIIコードはよく確立されました(IBMのEBCDICコードと競合することは依然として強力でした)。

最初の端末は、受信したすべての文字の印刷された記録を保持しました。少なくとも、プリントヘッドが入力できるよりも早く文字が届かない限りはそうです。しかし、CRTベースの端末が可能になり、問題が発生しました。 CRTには約25行しか入らず、80文字25行であれば誰もが画面の上部にスクロールする文字を提供することを真剣に考慮しないほど十分なRAMを示しました。ラム。画面。

したがって、読者が追いつくことができるように、送信者がしばらく停止する必要があることを示すためにいくつかの規則が必要です。

7ビットASCIIコードには、制御文字(0〜31および127)専用の33のコードポイントがあります。これらのいくつかは、NUL(スレッド、ギャップ、および接合のための空白の紙テープリーダー)、DEL(7つの穴すべてを打ち抜くことによって紙テープに「線が引かれた」文字を表示)、BEL(ディング!)CR、、LFなどの明確な目的です。持っています。TAB。ただし、端末デバイス自体を制御するために4つが明確に定義されています(DC1別名DC4Ctrl + Q、Ctrl + R、Ctrl + S、およびCtrl + T)。

私の推測では、一部のエンジニアが「ニーモニックのように」「停止」を意味する「S」と「続き」を意味する「Q」があまり悪くないと考えて、「送信を中止してください」DC3DC1「確認」を意味するように割り当てますになったということです。 、今送ってください。」

この規則は、UnixがBell Labsを離れて世界に進出したときによく確立されました。

この規則はソフトウェアフロー制御と呼ばれ、実際のシリアルデバイスでは非常に一般的です。これらの文字が通信チャネルで他の目的に使用されるのを防ぎ、受信側よりも多くの文字を送信しないように、受信する文字の前に停止信号を処理する必要があるため、正しく実装するのは簡単ではありません。ハンドル 。

可能であれば、フロー制御のためにシリアルデータストリームに帯域外の追加信号を使用するのが最善です。追加の信号線を可能にする直接有線接続では、ハードウェアハンドシェイクが使用され、その文字を他の目的に使用できるようになります。

もちろん、今日の端末ウィンドウは実際の物理シリアルポートを使用せずにスクロールバーを持っており、ソフトウェアハンドシェイキングはまったく必要ありません。しかし、ルーチンは残ります。

私はRichard Stallmanが最初のバージョンのemacsで増分検索にCtrl + Sをマップしたことについて不満を抱いていたことを覚えていました。

答え3

コントロールキー:シェルで特別な機能を実行します。

  • Ctrl- S:表示を一時停止します。
  • Ctrl- Q: ディスプレイの再起動
  • Ctrl- C: ジョブのキャンセル
  • Ctrl- U: ラインキャンセル
  • Ctrl- D: 信号ファイルの終わり

関連情報