ターミナルにVimによって送信された奇妙なエスケープシーケンス

StackOverflow https://stackoverflow.com//questions/20024211

  •  21-12-2019
  •  | 
  •  

質問

Vimは、インクポット方式を使用するときに、いくつかの奇妙な(すなわち、文書化されていない)エスケープシーケンスを基礎となる端末に送信するように見えます。私はそれらを任意のVT-100またはANSIエスケープコードに一致させることができませんでした。誰かがこれらのシーケンスが何であるかを知っていますか?

^[[3231m
^[[4232m
^[[3130m
.

これらのシーケンスは、責任を負うターミナルエミュレータ内の無効なトークンとして現れ、それらのための適切な文書を見つけることができるならば、私はこれらのシーケンスのサポートを追加したいと思います。

影響を受けるシステムには、以下のターミナル関連の環境変数が設定されています。

TERM=xterm
COLORTERM=
.

これら2つの変数の他の設定を試していません。

Vimはバージョン7.2ですが、同じ効果の新しいバージョンを試しました。

ありがとう!

役に立ちましたか?

解決

あなたの端末は88 - または256色のモードをサポートしていますか?もしそうなら、一般的なxterm-88colorの代わりにxterm-256colorまたはxtermのような用語値を使用する必要があります。

Inkpot は、8/16色のみをサポートする端末のサポートを特に否認します。 inkpot source

" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.
.

構文塗装を設定するコードは、端末が88色をサポートしていない場合は256色をサポートする必要があります。 8色(例えば、TERM=xterm)の場合にフォールバック値を提供しようとしません。 imnpot がエラーメッセージを発行した場合は、

を発行した場合はそれはいいでしょう。


コントロールシーケンスでは、そのタイプの端末の0から7の許容入力の範囲外の色番号のための8色の端子カラーコントロールシーケンスを生成しようとしています。したがって、これらのシーケンスはおそらく有効ではありませんが、それらは完全に意図的ではありません( Inkpot が256色のサポートを想定しているため、xterm Terminfoエントリは基本8色サポートの処理方法だけ知っています)。

たとえば、 INKPOT は、88色の端子でNormal構文の前景色を79に設定します。これは、非88色の端子(すなわち、256色の端子であるだけでなく、8色xterm)に対して231に変換されます。

TERM=xtermを使用してこの範囲外の色番号をフォーマットしようとすると、見つかった結果^[[3231mが得られます。

% tput -T xterm setaf 231 | od -a
0000000  esc   [   3   2   3   1   m
0000007
.

231^[[3の間のmの挿入)

xterm-256colorを使用している場合は、より通常の検索結果を得る:

% tput -T xterm-256color setaf 231 | od -a
0000000  esc   [   3   8   ;   5   ;   2   3   1   m
0000013
.

231^[[38;5;の間のmの挿入)

同様に、Normal構文88の色の88色の背景色は232の232に変換され、^[[4232mのための誤ったxtermシーケンスが生成されます(ただし、^[[48;5;232mの下でより合理的なxterm-256colorが発生する可能性があります)。

他のヒント

^[[3231m
.

色定義が行われた/間違っているようなように見えます:

^[[32;31m
. とにかくそれほど意味がない

$TERMまたは任意の値の特定の値で発生しますか?どのVIMバージョンですか?私たちは何について話していますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top