環境:
- Fedora 25(4.9.12-200.fc25.x86_64)
- GNOMEターミナル3.22.1 VTEバージョン0.46.1 + GNUTLSの使用
- VIM-Vi IMproved 8.0(2016年9月12日、2017年2月22日コンパイル16:26:11)
- tmux 2.2
私は最近tmuxの使用を開始し、tmuxの内部または外部のどちらで実行しているかによってVim内の色が変わることを観察しました。以下は、Git diffを表示しているtmuxの外側(左)と内側(右)のVimのスクリーンショットです。
私のTERM
変数は
- tmuxの外側:
xterm-256color
- tmuxの内部:
screen-256color
Vimはこれらの端末タイプを期待どおりに報告します(経由:set term?
):
- tmuxの外側:
term=xterm-256color
- tmuxの内部:
term=screen-256color
Vimは、両方のインスタンスが256色モードで実行されていることも報告します(経由:set t_Co?
):
- tmuxの外側:
t_Co=256
- tmuxの内部:
t_Co=256
Vimをtmux内で256色モードで実行することに関して、同様の質問がたくさんあります(私が見つけた最良の答えはここにあります)が、上記の情報を与えられた私の問題ではないと思います。
端末タイプを次のように設定してVimを実行すると、tmuxの外部で問題を再現できますscreen-256color
。
$ TERM=screen-256color vim
そのため、色の違いの原因xterm-256color
となるscreen-256color
端末機能と端末機能の間に何らかの違いがあるだけだと思います。タイトルで提起された質問につながるのはどれですか:Vimの色が異なる端末の機能で具体的に何が原因ですか?:set termcap
tmuxの内部と外部の 実行の違いはわかりますが、どの変数が実際に動作の違いを引き起こすのか興味があります。
前の質問とは無関係に、tmuxの内部または外部で実行するときにVimの色を統一することは可能ですか? 私が試したいくつかのことは次のとおりです。
- デフォルト端末を明示的に設定すると、tmuxは
~/.tmux.conf
さまざまな値を使用します(tmux FAQのアドバイスに反するものもあります)。
set -g default-terminal "screen-256color" set -g default-terminal "xterm-256color" set -g default-terminal "screen.xterm-256color" set -g default-terminal "tmux-256color"
- を使用してtmuxを起動し
tmux -2
ます。
すべての場合において、Vimはtmux内で異なる色を表示し続けました。
xterm-256color
バージョンでは256色のエスケープシーケンスを見ることができます(ファイルで "38; 5;"を検索します)screen-256color
。たとえば、\e[38;5;81m
in xterm-256color
(256色パレットの色#81、真ん中の青の色合い)がある場所にscreen-256color
は、\e[34m
代わりに(8色パレットの標準の青)が含まれています。したがって、主な質問は、なぜvimが256色パレットを使用しないのかですTERM=screen-256color
。
xterm-256color
バージョンでは、画面を2回印刷するように見えることです。最初は従来の色で、次に256色のパレットで印刷されます。ファイル内で「F1」などを検索するとxterm-256color
、に2つの一致があり、最初は\e[34m
色で、2番目はで一致してい\e[38;5;81m
ます。ここで何が起こっているのか分かりません。
set -g default-terminal "screen.xterm-256color"
で構成~/.tmux.conf
を追加して再ロードすると、うまくいきました(問題を強調表示)。thx
script
、起動してvim
、終了してvim
からscript
シェルを終了して、結果のtypescript
ファイルを添付してください。次に、TERM=screen-256color vim
代わりに同じ手順を繰り返します。