我遇到了和提问者一样的问题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