web-dev-qa-db-ja.com

キャレット角括弧角括弧A ^ [[A-どういう意味ですか?

これが既に尋ねられた場合はお詫びしますが、自分でこれを見つける方法がわかりません。検索エンジンで「^ [[A」を検索すると、「^ [[」の部分は完全に無視されます。

とにかく、私の質問:ターミナル(Macの場合)で矢印キーを押すと、「^ [[A」、「^ [[B」、「^ [[C」、または「^ [[D」という文字が表示される。 (おそらく)DOSを使用しているときにこの数年前に遭遇したことを覚えているようで、それはもっと頻繁に発生したと思います。

なぜこれが起こり、それらはどういう意味ですか?

13
Phill

これらは ANSIエスケープコード です。 ^[はESC(エスケープ)文字を表し、次の[は実際の左角括弧であり、文字はエスケープコードの機能を示します。の Esc[部分はCSI(Control Sequence Introducer)と呼ばれます。したがって、シーケンスCSIAは上向き矢印、つまりCUU(CUrsor Up)を意味します。

とにかく、このスキームは VT1 ディスプレイ端末(1978年に導入)の時代にさかのぼります。 VT100で使用されているエスケープシーケンスの一部は、1980年代初頭にANSIによって標準化され、それ以来一般的に使用され続けています。

通常、矢印キーを押すと、一部のプログラム(シェルなど)がリッスンしていて、それらに作用することができます。したがって、上矢印を押すと、コマンド履歴がスクロールして戻ります。ただし、プログラムが実行されている場合は矢印キーのエスケープシーケンスを理解しないため、通常は次のようにターミナルにエコーバックされます。ヒットする可能性のあるその他のキー。だから、あなたは時々^[[A上矢印キーを押した場合。

20
Greg Hewgill