環境:
- Fedora 25(4.9.12-200.fc25.x86_64)
- GNOMEターミナル3.22.1はVTEバージョン0.46.1 + GNUTLSを使用します。
- VIM - Vi 改善された8.0(2016年9月12日、2017年2月22日16:26:11で編集)
- マルチプレクサ2.2
私は最近tmuxを使い始めましたが、tmuxの内部で実行しているのか外部で実行しているのかによってVimの色が変わることがわかりました。以下は、Git diffを見るときのVimの外側(左側)とtmuxの内側(右側)のスクリーンショットです。
私の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
tmuxでVimを256色モードで実行することに関して同様の質問がたくさんあります。 (私が見つけた最高の答えは次のとおりです。ここ)、しかし上記の情報を考えると、それは私の問題ではないと思います。
Vimを実行し、端末タイプを次のように設定した場合screen-256color
:
$ TERM=screen-256color vim
xterm-256color
screen-256color
したがって、これは色の違いを引き起こす端末機能間にわずかな違いがあると信じています。これはタイトルで提起された質問につながります。ターミナル機能でVimの色が異なるように見えるのはなぜですか? tmuxの内部と外部で実行することの違いはわかりますが、:set termcap
実際にどの変数が動作の違いを引き起こしているのか疑問に思います。
前の質問とは別に、tmuxの内側または外側でVimの色を一貫して維持できますか? 私が試したいくつかのことは次のとおりです。
- tmuxで使用されるデフォルトの端末を
~/.tmux.conf
さまざまな値に明示的に設定します(一部はtmuxの推奨事項に違反します)。よくある質問):
-g 基本端末「screen-256color」設定 -g 基本端末「xterm-256color」設定 -g 基本端末「screen.xterm-256color」の設定 -g 基本端末「tmux-256color」設定
tmux -2
以下を使用して tmux を起動します。
すべての場合において、Vimはtmux内で他の色を表示し続けます。
答え1
答え2
tmux
terminfo機能はサポートされていません。bce
(背景色を消去)、vim
「基本色」スキームを使用するかどうかを確認します。
この機能はtmux
何度も言及されています。
答え3
次の設定が~/.tmux.conf
私にとって効果的です。
# file ~/.tmux.conf
# ...
set -g default-terminal "xterm-256color"
# make colors inside tmux look the same as outside of tmux
# see https://github.com/tmux/tmux/issues/696
# see https://stackoverflow.com/a/41786092
set-option -ga terminal-overrides ",xterm-256color:Tc"
# ...
答え4
.tmux.conf
私のためにRGBカラーを取得するには、以下を追加する必要がありました。入らないようにする色の違い。
set -ag terminal-overrides ",xterm-256color:RGB"
set -g default-terminal "tmux-256color"