[?1049hと[?1h ANSIエスケープシーケンス]は何をしますか?

[?1049hと[?1h ANSIエスケープシーケンス]は何をしますか?

ボックスでシェルを使用しているときにecho foo | lessajaxレスポンスでless command()を呼び出すと、次のコードが表示されます。

\u001B[?1049h\u001B[?1h\u001B=\rfoo\r\n\u001B[7m(END)\u001B[27m\u001B[K

\u001B[?1049hそして\u001B[?1hエスケープシーケンスは何をし、何ですか\u001B=?どこかに文書化されていますか?

ベストアンサー1

\u001B不必要に長いASCIIエスケープ文字です。ECMAスクリプト6。 POSIXでは8進数を使用し\033、他の一部では16進数を受け入れます\01b。数字の大文字と小文字は重要ではありません。

\u001B[?1049h(および)\u001B[?1049lは、次を表すエスケープシーケンスです。xterm到着オプションで代替画面に切り替えるか、代替画面から切り替えます。

  • 疑問符は、「個人使用」(実装固有の機能用に予約されている標準のカテゴリ)であることを示します。記載された個人使用パターンの約3分の1XTerm制御シーケンスDECのいずれかに該当します(DECCKM説明に示すようにニーモニックがあります)。言及したように、他のものはxtermのオリジナルであるか、他の端末で改造されたものです。

  • このエスケープシーケンスを使用する理由は、プログラムが代替画面を使用できるかどうかをユーザーが決定できるterminfoベースの方法を提供するためです。 ~によるとxterm マニュアル:

titeInhibit(授業TiteInhibit)は
xtermを削除するかどうかを指定します。tiそしてte TERMCAP文字列のtermcapエントリ(多くの画面指向プログラムを起動するときに代替画面間を切り替えるために使用されます)が設定されている場合、xtermは代替画面に切り替えるためにエスケープシーケンスも無視します。 Xtermは複合制御シーケンス(プライベートモードとも呼ばれる)をサポートし、さまざまな方法でterminfoをサポートします。10471048そして1049オリジナルと同じ効果47制御順序。このリソースのデフォルト値は「false」です。

1049コード(導入済み)1998年) はい広く受け入れられているxtermと互換性があると主張するほとんどのターミナルエミュレータはほとんどその機能を提供しません。任意に選択できる。だから彼らは実際にこの機能を実装していません。

一方、\u001B[?1hxtermから派生するのではなく、(例えば\u001B=)スイッチング端子を使用するためにDEC VT100sから派生します。申請方法カーソルキー(DECKKM)とテンキー(DECKPAM)に使用されます。たとえば、端末を初期化するときにプログラムで使用されますless。端末の説明では、アプリケーション(または一般)モードエスケープシーケンスを特殊キーとして使用するためです。マッチこれらの端末記述に提供される初期化文字列です。

追加資料:

おすすめ記事