web-dev-qa-db-ja.com

vimとtmuxの背景色の不一致

Tmuxを実行しているときに、vimですべての色を動作させるのに問題があります。 TERM変数や256colorsに何らかの問題があるとは思いますが、vim、tmux、iTermで256色を動作させるためにオンラインで見つけたすべてのことを実行しましたが、何も修正されていません。小さな問題ですが、深刻なバグがあります。

ITermを介したvimのコードファイルの例を次に示します。 iTerm

そして、tmuxとiTermを介したvimの同じファイルを次に示します。 enter image description here

コードがそこに記述されている場合にのみ、背景色がわずかに不一致に見えることに注意してください。これはなぜでしょうか?

vimrcset t_Co=256があり、iTerm端末がxterm-256colorに設定されており、set -g default-terminal xterm-256colortmux.confにあります。

if [ -e /usr/share/terminfo/x/xterm-256color ]; then
     export TERM='xterm-256color'
else
     export TERM='xterm-color'
fi

私の.profileで。この正確な問題は、Ubuntuベースのマシンで再現されており、そこでは同じ構成ファイルをすべて使用しています。これにより、少なくともOS/iTermに関連していない問題が特定されます。

5

以下の行を.tmux.confに追加した後

set -g default-terminal "screen-256color"

以下の行を.vimrcに追加する必要があります

set term=screen-256color

最後に、エイリアスを.bashrcに追加する必要があります

alias tmux='tmux -2'
7
qun

Tmux内で、TERM=screen-256colorを設定する必要があります。 here のようなものかもしれません。これはtmux内からのみ機能し、tmux.confでは機能しません。 TERM値を無条件に上書きしないことを確認してください。 .bashrc、またはtmux内でシェルを開いたときに取得されるもの。

2
Ingo Karkat

古い質問ですが、私を助けなくてもGoogle検索で上位にランクされました。これが最終的に私のためにこれを解決したものです

。tmux.confで:

set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"

。vimrcで:

if exists('+termguicolors')
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
  set termguicolors
endif
2
Martin Wallgren