tmux 中 vim 背景支持 256 色

tmux 中 vim 背景支持 256 色

在 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 使用以下命令创建新的 shellTERM=screen-256color
  • .bashrc/.profile 运行,设置TERM=xterm-256color
  • vim 运行,尝试使用不正确的 tmux TERM

你可以通过运行来检查

echo $TERM

在一个新的 tmux shell 中。

Tmux 对于终端的正确设置相对比较挑剔。如果可以,请在 gnome-terminal 的配置中设置 term 值,而不是在 .bashrc 中。如果做不到这一点,请在这些设置周围加上“screen”或“screen-256color”TERM 的勾选,并且在这种情况下不要重置它们。

Tmux 确实希望终端设置为screenscreen-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 不支持真彩色。

相关内容