在 tmux 中使用 vim 时,我可以看到已启用 256 色支持。使用 $tput colors
但是,在 tmux 中更改 vim 中的配色方案将会逐行更改配色方案,但不会更改整个背景。参见屏幕截图
下面是我的 .vimrc 文件的片段。我原来的配色方案是 solarized dark,然后运行 :colorscheme molokai 后,你会看到发生了什么。
信息
- gnome 终端
- 狂欢
在我的 ~/.tmux.conf 中
set -g default-terminal "screen-256color"
在我的 ~/.vimrc 中
set t_Co=256
在我的 ~/.bashrc 中
# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"
在我的 ~/.profile 中
# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
export TERM='xterm-256color'
else
export TERM='xterm-color'
fi
有什么想法可以在 vim 中实现完整的配色方案更改吗?我从文件中截取的所有片段看起来都不错吗?
答案1
从 .bashrc 和 .profile 来看,tmux 中的 shell 正在覆盖 tmux 配置中的“默认终端”设置。如下所示:
- tmux 使用以下命令创建新的 shell
TERM=screen-256color
- .bashrc/.profile 运行,设置
TERM=xterm-256color
- vim 运行,尝试使用不正确的 tmux TERM
你可以通过运行来检查
echo $TERM
在一个新的 tmux shell 中。
Tmux 对于终端的正确设置相对比较挑剔。如果可以,请在 gnome-terminal 的配置中设置 term 值,而不是在 .bashrc 中。如果做不到这一点,请在这些设置周围加上“screen”或“screen-256color”TERM 的勾选,并且在这种情况下不要重置它们。
Tmux 确实希望终端设置为screen
或screen-256color
答案2
正如这里解释的那样,禁用背景颜色擦除(BCE)通过清除t_ut
终端选项(:set t_ut=
在 Vim 中运行,然后按Control+L刷新终端的显示),以便在 tmux 和 GNU 屏幕内部使用 Vim 时配色方案正常工作。
答案3
我找到了更好的方法这个帖子。您可以为 tmux 创建别名,tmux -2
这将强制 tmux 假定 shell 正在使用 256 色终端。
答案4
t_Co=8
如果您仍然遇到问题:我注意到,即使$TERM
设置为,vim 也会回退到使用 tmux 中的选项screen-256color
。我的解决方法是 vimrc 中的这段代码:
if exists("$TMUX")
set t_Co=256
set notermguicolors
else
set termguicolors
endif
仅当在 tmux 会话中时,才会填充该$TMUX
变量。在本例中,我允许 vim 使用 256 种颜色。请注意,我还取消了 termguicolors 的设置,因为 tmux 不支持真彩色。