1

私の .zshrc ファイルには次の行が含まれています

bindkey -v

^q または \Mq をプッシュラインにバインドしようとしています。

bindkey "^q" push-line

しかし、何らかの理由で機能していません。

「bind key -v」を実行すると確認されます

"^Q" push-line

しかし、実際には何もしません。^r などの他のコントロール マッピングは正常に機能します。

「push-line」を「\eq」に正常にマップできますが、この動作は好きではありません。まず第一に、私は決して esc- タイプのバインディングを使用しません。第二に、それを使用すると、コントロール、メタ、およびエスケープにバインドされますが、これはやり過ぎです。(ちなみに、それらすべてを「bindkey -m」でそのようにバインドするだけでよいのではないでしょうか? .zshrc で設定したことはありませんか?)

それで、ここで何が起こっているのか誰か知っていますか?

4

1 に答える 1

3

これらのショートカットは、ソフトウェア フロー制御 (wikipedia)によって使用されます。

Ctrl+Sプログラムの出力を停止およびCtrl+Q再開するために使用されます。

試すには:
実行をwhile (true) ; do echo $RANDOM ; sleep 1 ; done
押しCtrl+Sて、出力を停止します。
を押しCtrl+Qて、出力を再開します。
( のようにプログラムが停止したかどうかはわかりません。プログラムを強制終了Ctrl+Zするには、出力が不足しているため停止していると思いますCtrl+C。)

これらのショートカットはショートカットを引き継ぎますが、このフロー制御機能を無効にすると機能する可能性があります。ターミナルで誤って Ctrl-S を押した後にフリーズを解除
する方法 で無効にする方法を学ぶことができますか? - Unix および Linux
試して教えてください。

于 2012-12-20T10:52:39.070 に答える