追加読書

追加読書

escape-timeこのオプションは~/.tmux.conf多くのTmux設定ファイルに存在するために設定しました。

ただし、このオプションを設定した後は、実際には何の効果も表示されません。特に、escape-time10000(10秒)に設定すると、すべてがまだ「動作」します。

これは私の現在の設定です。

# ESC delay after prefix (ms)
set -sg escape-time 500

「ESC遅延」とは正確に何を意味し、いつ使用されますか?

ベストアンサー1

端末は単に文字ストリームをホストに送る。主キーのキーの場合英数字部分通常、印刷可能な一般文字またはC0制御文字を送信するため、キーボード(ISO 9995用語)に適しています。

⇧ Shiftキーボードの他の部分にあるカーソルキー、ファンクションキー、編集キーなどの場合には、メイン部分のキーコード(例:+⇥ Tabまたは)の明確な制御がなくても状況が異なります。 +)は⎇ Altアクセラレータ修飾子として使用されます。

ECMA-35およびECMA-48はシステムを定義します。エスケープシーケンス、ESC文字(U + 001B)で始まる制御シーケンス、CSI文字(U+009B、Control Sequence Introducerの略)で紹介されます。端末は主に後者を使用します。たとえば、キーに対して送信されるECMA-48 Cubsor Backwards(CUB)制御シーケンスです。

世界が基本的に発展する前の1970年代にもターミナル(エミュレートされたターミナルを含む)がまだ存在していたという事実でなかったならば良いことでもあります。8ビットクリーン

ターミナルは、PC革命、BBS、FidoNetなどの遺産である奇数/偶数/パリティのない7ビットシリアルエンコーディングを世界で依然として広く使用しているように動作します。 1980年代の8N1を支援し、墓の波は仕事を助けました。だから彼らは使う7桁のエイリアスC1制御文字(CSIなど)を送信するために使用される形式。

このフォームは以下に適しています。7ビット転送8ビット文字はきちんと送信できません。これは、実際にC1制御文字をESC文字に送信し、C1文字コードから64を引いた文字を送信することを意味します(ESC FeECMA-35を読んでいるユーザーの場合)。これは最終的にすべてを意味します。制御シーケンス名目上、C1 制御文字で始まります。いいえこれで、C0制御文字で始まるキーボードのキーに対応します。はいキーボードのキーです。

ご存知のように、迷惑なユーザーは、Escエスケープシーケンスの一部ではなく、ESC文字自体を送信するキーを持っています。彼らはTUIプログラムで「モードの​​変更」や「ジョブのキャンセル」などを意味するためにこの単語を使用するのが好きです。数年前、AppleがこのキーがAppleキーボードの実際の物理キーになるのをブロックしたときに少し不満がありました。

それでは、(実装時)のようなviプログラムのように端末入力文字を文字ごとに読み取るアプリケーションは何ですか?tmux外のターミナル)、どうすればいいですか? ESCキーを持っていて、それを使用するのが好きなユーザーと7ビット転送を介して制御シーケンスを送信する端末をどのように区別しますか?

タイムアウトを設定します。 ESCの後ろの文字が十分に速く到着した場合、これはECMA-48制御シーケンスを送信する端末である可能性があり、機械速度でそれを行います。 ESCの後のキャラクターが最小限の遅れの後に到着した場合、これはおそらく人類Esc他のものを入力する前にこのキーを入力してください。

これがescape-time設定のすべてです。 tmuxお会いしましょう構成タイムアウト(VIMとNeoVIMにも同じ)は、多くの場合、他のプログラムによって組み込まれています。 10秒に設定すると、機械がおそらく非常に遅いことがわかります。これは一般的に言葉ではありません。もっと通常修正は減らすあなたはすぐに打者を打つ人だからです。

今日、このアイデアの主な問題は、プログラムにSSHおよびネットワーク転送遅延を導入すると、人の入力が発生する可能性があることです。本当に大丈夫です。このようにすばやく到着する理由は、すでに「ローカル」側に収集され、転送ウィンドウを移動するためのリモートホストの承認を待っているからです。ネットワークの可能性も紹介します。分離ESC文字の後に遅延を生成して、リモートホスト上で実行されているプログラムが人が入力したものを誤って推測するようにする機械生成制御シーケンス。

おそらく世界はTCPも8ビットクリーンであることを理解するでしょう(例えば、正式にはそうです。1981年以降)、シリアル通信が何十年も続いてきたため、端末は実際に7ビットエイリアスの代わりに実際のCSI文字を送信できます。これにより、端末で生成された制御シーケンスと迷惑なユーザーキー入力(アクセラレータ予約)の間のあいまいさが減少し、Escプログラムは受信した文字間の時間を測定して機械または人間を扱っているかどうかを知る必要がなくなります。 。

結局、本物ターミナルは、1980年代…1980年代初頭に世界が8ビットにきれいになったことを理解しています。 1983年にDEC VT220が発売され、S8C1T制御シーケンスこれにより、端末は7ビットエイリアスの使用を停止し、正しいU + 009B文字転送を開始するように指示します。 1987年にVT320が発売された時点で、これは端末の不揮発性RAMに保存される設定機能であり、デフォルトでオンになっていました。同じ設定工場出荷時のデフォルトは8N1です。

追加読書

おすすめ記事