vim 和 tmux 中的背景颜色不匹配

vim 和 tmux 中的背景颜色不匹配

当我运行 tmux 时,我很难让所有颜色在 vim 中工作。我相信这是 TERM 变量或 256 色的某种问题,但我已经尽了我能在网上找到的所有方法来让 256 色在 vim、tmux 和 iTerm 中工作,但没有任何解决办法。这是一个小问题,但它严重困扰着我。

下面是通过 iTerm 在 vi​​m 中运行的示例代码文件: iTerm

这是通过 tmux 和 iTerm 在 vi​​m 中运行的同一个文件: 在此输入图像描述

请注意,仅当在此处编写代码时,背景颜色看起来略有不匹配。为什么会这样呢?

我的 iTerm 终端设置set t_Co=256vimrc,我的 iTerm 终端设置为xterm-256color,我的 iTerm 终端set -g default-terminal xterm-256color设置为tmux.conf

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

在我的.profile。这个确切的问题在我工作时基于 Ubuntu 的机器上得到了复制,并且我在那里使用了所有相同的配置文件。这至少将问题隔离为与操作系统/iTerm 无关。

答案1

这是一个老问题,但它在我的谷歌搜索中排名很高,但对我没有帮助。这最终为我解决了这个问题

.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

将以下行添加到后.tmux.conf

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

您仍然需要将下面的行添加到.vimrc

set term=screen-256color

最后需要添加别名.bashrc

alias tmux='tmux -2'

答案3

在 tmux 内部,您需要设置TERM=screen-256color.它可能是这样的这里这仅适用于 tmux 内部,但不适用于tmux.conf.检查您是否无条件地覆盖该TERM值,例如您的值.bashrc,或者当您在 tmux 中打开 shell 时获取的任何内容。

相关内容