![tmux 中的 vim 背景颜色 - 如何强制 zsh 在 tmux 中使用屏幕而不是 xterm](https://linux22.com/image/1353361/tmux%20%E4%B8%AD%E7%9A%84%20vim%20%E8%83%8C%E6%99%AF%E9%A2%9C%E8%89%B2%20-%20%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%20zsh%20%E5%9C%A8%20tmux%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%B1%8F%E5%B9%95%E8%80%8C%E4%B8%8D%E6%98%AF%20xterm.png)
我遇到了和提问者一样的问题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