tmux 中的 vim 背景颜色 - 如何强制 zsh 在 tmux 中使用屏幕而不是 xterm

tmux 中的 vim 背景颜色 - 如何强制 zsh 在 tmux 中使用屏幕而不是 xterm

我遇到了和提问者一样的问题tmux 中 vim 背景支持 256 色

在我的正常终端中zsh,没有背景颜色问题vim,但是当我在里面运行它时tmux,我遇到背景颜色问题。

screen显然,使用而不是存在问题xterm

在 Tmux 之外:echo $TERM结果在screen
Tmux 内部:echo $TERM结果xterm

在我的 .zshrc 和 .tmux.conf 中我已经设置

TERM=screen-256color

但它没有任何效果。(我也试过了TERM=screen

我怎样才能强制tmux使用screen

编辑:感谢 htor,我在 .tmux.conf 和 .zshrc 中添加了set -g default-terminal "screen"(也尝试过) 。set -g default-terminal "screen-256color"export TERM=screen-256color

现在我得到:

Tmux 外部:echo $TERM导致screen-256color
Tmux 内部:echo $TERM导致echoscreen-256color(<- 看起来有点奇怪,输出正确吗?)

我还能做些什么来解决 tmux 中 vim 的背景颜色问题?

答案1

正如这里解释的那样,禁用背景颜色擦除(BCE)通过清除t_ut终端选项(:set t_ut=在 Vim 中运行,然后按Control+L刷新终端的显示),以便在 tmux 和 GNU 屏幕内部使用 Vim 时配色方案正常工作。

答案2

要设置默认终端变量,请将tmux您的更改.tmux.conf为:

set -g default-terminal "screen"

在 中,设置变量的 shell 语法将不起作用.tmux.conf。在您的 中,.zshrc您应该导出 的值,TERM以确保所有 shell 在您的环境中继承此值:

export TERM=screen-256color

相关内容