Vimdocの文に出くわしました:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
そして、このキーは本当に私のvimをハングさせます。 emacs noxでC-s
/C-x C-s
を使用しても問題ないので、vimのせいだと思っていました。しかし、マンページを読んでいてCtrl-s
を押すと、man
もハングします(less
をページャーとして設定しています)。
だから誰かが何が起こっているのか教えてもらえますか?
端末エミュレータはxterm
およびlxterminal
であり、tty
にもこの問題があります。そして Ctrl+q すべての場合において、プロセスを再び正しくします。
この機能はソフトウェアフロー制御(XON/XOFFフロー制御)と呼ばれます。
データリンクの一方の端(この場合はターミナルエミュレータ)がこれ以上データを受信できない場合(バッファが満杯または満杯に近いか、ユーザーがC-s
を送信したため)、 "XOFF"を送信して通知します「XON」信号が受信されるまで一時停止するデータリンクの送信側。
内部で起こっていることは、「XOFF」がカーネルのTTYドライバーにデータを送信しているプロセスをスリープ状態にする(映画の一時停止のような)ように伝え、TTYドライバーが「XON」を送信するまでそもそもプロセスが停止されなかったかのようにカーネルがプロセスを再開します。
C-s
は、端末のスクロールロックを有効にします。これにより、端末がスクロールしないようにします(「XOFF」信号を送信してソフトウェアの出力を一時停止します)。
C-q
は、スクロールロックを無効にします。端末のスクロールを再開します(「XON」信号を送信してソフトウェアの出力を再開します)。
この機能はレガシーであり(端末が非常に遅く、スクロールを許可しなかった場合に戻ります)、デフォルトで有効になっています。
この機能を無効にするには、~/.bash_profile
または~/.bashrc
に次のものが必要です。
stty -ixon
私の終わりに.bashrc
追加したスクリプト:
#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon