ターミナルにVimによって送信された奇妙なエスケープシーケンス
-
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色サポートの処理方法だけ知っています)。
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バージョンですか?私たちは何について話していますか?