Vim 256色奇怪的行为与tmux

时间:2013-12-13 01:40:39

标签: vim tmux 256color

这是一个有趣的小问题,我已经开始使用终端了。我在gnome-terminal里面使用vim。我喜欢256色,所以我不必使用gVIM。

我的相关.zshrc设置是:

export TERM=xterm-256color

我的相关.vimrc设置是:

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif

你会从这个showterm中注意到问题是什么: http://showterm.io/06460aeb043cac4bd0256

我使用tmux vim获得了一种奇怪的背景色。对此的任何帮助都会很棒。

2 个答案:

答案 0 :(得分:4)

这只是一个快速调查。

  1. gnome-termnial 中执行 tmux 之后,“COLORTERM”将被覆盖。这意味着$ COLORTERM在tmux中是NULL。
  2. 这些变量的流动。

    1. gnome-terminal启动并加载.zshrc。 (TERM = xterm-256color COLORTERM = gnome-terminal)
    2. tmux开始。 (它覆盖COLORTERM,加载其配置“default-terminal”作为TERM的值)
    3. tmux load .zshrc(TERM被重写为“xterm-256color”)
    4. Now => TERM =“xterm-256color”COLORTERM =“”
    5. vim starts => (除了你的.vimrc配置,如果术语是256色,t_Co设置为256)
    6. 问题是只有当TERM =“screen-256color”而不是“xterm-256color”时,tmux才能正确支持256色。

      以下是解决方案:

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

      if [[ $COLORTERM == 'gnome-terminal" ]]; then
                  export TERM="xterm-256color"
      fi
      

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

      set -g default-terminal screen-256color
      

      最后,不需要vim设置。

      如有任何问题,请发表评论。

答案 1 :(得分:1)

尝试以下方法。这对我有用:


.tmux.conf

set -g default-terminal "screen-256color"

另外,删除term

的旧.vimrc