如何阻止我的 VIM 背景在没有文本的 tmux 中透明?

How do I stop my VIM background from being transparent in tmux where there is no text?

我一直在努力将我的开发设置从 Mac OS.

移动到一个新的基于 Ubuntu 的分区

我目前无法让背景在 tmux 中保持稳定。

我在我的 .bashrc 中将 TERM 设置为 xterm-256color 并且 vim 在 tmux 之外按预期工作。我还将 tmux 别名为 "tmux -2" 并添加了

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

我的.tmux.conf.

我的 .vimrc 包含:

set t_Co=256
set background=dark
color Tomorrow-Night

我想最好的解释方法是用图片...这是 tmux 之外的预期外观 (明晚配色方案):

这是我在 tmux 中遇到的情况:

如您所见,终端背景在没有文字的地方渗出。

谢谢!

我刚刚尝试在我的机器上重现您的设置,但我遇到了类似的背景问题。

似乎在 .bashrc 中将 TERM 设置为 xterm-256color 会覆盖 tmux 中的 set -g default-terminal "screen-256color",这会导致问题。这是有道理的,因为 bash 在 tmux 中是 运行 并且它的设置覆盖了 tmux 中的设置。

您可以通过 运行 echo $TERM in bash within tmux 轻松验证这一点。对于您当前的设置,它将是 xterm-256color 这是不行的,因为 Tmux 明确要求将其设置为 screen-256color.

验证此理论的快速修复方法是删除或注释掉 .bashrc 中设置 TERM 的一行,然后进行尝试。

一个合适的解决方案应该是这样 .bashrc:

[ -z "$TMUX" ] && export TERM="xterm-256color"

上面一行将:

  • 如果 bash 是 运行 独立的(无 tmux)
  • ,则将 TERM 设置为 xterm-256color 如果 运行 在 tmux 中,
  • 将不会覆盖 TERM