zshは端末に標準モードを使用しますか?

zshは端末に標準モードを使用しますか?

私はいつも探求しterminfoていますstty。実行してみるとstty -a|grep icanonキャノニカルモードが設定されているようですが、オフにしてもう一度確認してみると、stty -icanonまだ設定されていることがわかります。 Bashで同じことをすると、イカノンを無効にすることができますが、動作に何の変化も感じません。もしそうなら、2つの質問があります。 zshでicononを無効にできないのはなぜですか。可能であれば動作にどのような影響がありますか?

答え1

Bashで同じことをすると、イカノンを無効にすることができますが、動作に何の変化も感じません。

bashが正式モードに切り替えられたためです。去るユーザーコマンドを読むとき(端末ドライバが提供しない行編集機能を実装するために - テキストの挿入、矢印キーを使用してカーソルを左右に移動するなど)また覆うコマンドラインを実行するときの以前の端末設定。

効果を表示するには、次の外部コマンドを実行しますcat

bash$ stty -icanon
bash$ cat
hheelloo

stty echo各キーは開かれているので一度、cat行全体を待たずにすぐに読み書きするため、一度繰り返されます。

[zshを使用] オフにしてstty -icanonもう一度確認すると、まだ設定されていることがわかります。

上記の以前の端末設定を復元する場合zshにも適用されます。合理的なデフォルト(含むechoicanon設定)。おそらく、コマンドが正式モードを終了した場合は、次のように仮定するからです。去る終了後、これは単なる事故です(たとえば、フルスクリーンアプリケーションがクラッシュまたはviクラッシュlessした場合など)。

zshreadlineライブラリを使用して他のプログラムと同じように動作させるオプションが見つかりませんでしたが、bashコマンドを実行する前にicanonモードをオフにするには、同じコマンドラインで実行してこれを実行できます。

zsh$ stty -icanon; cat
hheelloo

関連情報