Vim 256色tmux的奇怪行为

Vim 256色tmux的奇怪行为,vim,tmux,256color,Vim,Tmux,256color,这只是一个关于终端的有趣的小问题。我在gnome终端内部使用vim。我喜欢256色,所以我不必使用gVIM 我的相关.zshrc设置为: export TERM=xterm-256color if $COLORTERM == 'gnome-terminal' set t_Co=256 endif 我的相关.vimrc设置为: export TERM=xterm-256color if $COLORTERM == 'gnome-terminal' set t_Co=256 endif

这只是一个关于终端的有趣的小问题。我在gnome终端内部使用vim。我喜欢256色,所以我不必使用gVIM

我的相关.zshrc设置为:

export TERM=xterm-256color
if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif
我的相关.vimrc设置为:

export TERM=xterm-256color
if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif
您将从这个showterm中注意到问题所在:


我用tmux vim得到了一个奇怪的背景颜色。这方面的任何帮助都会很好。

这只是一个快速调查

  • 在gnome Terminal内部执行tmux后,“COLORTERM”将被覆盖。这意味着$COLORTERM在tmux中为空
  • 这些变量的流动

  • gnome终端启动并加载您的.zshrc。(TERM=xterm-256color COLORTERM=gnome终端)
  • tmux启动。(它覆盖COLORTERM,加载其配置“default terminal”作为TERM的值)
  • tmux load.zshrc(术语改写为“xterm-256color”)
  • 现在=>TERM=“xterm-256color”COLORTERM=“”
  • vim starts=>(除了.vimrc配置之外,如果术语为256色,则t_Co设置为256色)
  • 问题在于,只有当TERM=“screen-256color”而不是“xterm-256color”时,tmux才能正确支持256色

    下面是一个解决方案:

    首先,将其添加到.zshrc(我使用bash语法):

    其次,将其添加到“~/.tmux.conf”中:

    最后,不需要vim设置


    如有任何其他问题,请发表意见。

    请尝试以下内容。这对我起了作用:


    .tmux.conf


    另外,删除
    的旧
    术语
    值。这里的答案有用吗?Tmux不会覆盖$COLORTERM。在tmux内部,$COLORTERM仍然等于“gnome终端”。问题在于,在tmux内部,$TERM是“xterm-256color”,而它需要是“screen-256color”。不知道为什么.tmux.conf没有覆盖它。好吧,我的tmux在我的实验中覆盖了它,谢谢你指出这一点。对于第二种情况,我认为这是因为tmux先加载.tmux.conf,然后加载.zshrc,所以最终将设置.zshrc中的任何进一步配置。通常,覆盖vimrc中的“term”设置不是一个好主意。Vim可以通过$TERM变量自己计算出来。
    set -g default-terminal "screen-256color"