环境:
- Fedora 25(4.9.12-200.fc25.x86_64)
- GNOME终端3.22.1使用VTE版本0.46.1 + GNUTLS
- VIM-Vi IMproved 8.0(2016年9月12日,2017年2月22日16:26:11编译)
- tmux 2.2
我最近开始使用tmux,并且观察到Vim中的颜色会根据我在tmux内部还是外部运行而变化。下面是查看Git差异时Vim在tmux外部(左)和内部(右)的屏幕截图:
我的TERM变量是
- 外部tmux:
xterm-256color - 内部tmux:
screen-256color
Vim按预期(通过:set term?)报告以下终端类型:
- 外部tmux:
term=xterm-256color - 内部tmux:
term=screen-256color
Vim还报告两个实例都以256色模式运行(通过:set t_Co?):
- 外部tmux:
t_Co=256 - 内部tmux:
t_Co=256
关于让Vim在tmux中以256色模式运行(我发现最好的答案是在这里),还有很多类似的问题,但是鉴于以上信息,我认为这不是我的问题。
如果我在终端类型设置为Vim的情况下运行Vim,则可以在tmux之外复制该问题screen-256color:
$ TERM=screen-256color vim
因此,我认为xterm-256color和screen-256color终端功能之间仅存在一些差异会导致颜色差异。这就引起了标题中提出的问题:终端功能中的哪些特定因素导致Vim颜色不同? 我看到了在:set termcap内部和外部运行tmux 之间的差异,但是我很好奇哪个变量实际上导致了行为上的差异。
与上一个问题无关,在tmux内部或外部运行时,Vim颜色是否可以保持一致? 我尝试过的一些事情包括:
- 显式地将默认终端tmux使用设置
~/.tmux.conf为各种值(有些违反了tmux FAQ的建议):
设置-g默认终端“ screen-256color”
设置-g默认终端“ xterm-256color”
设置-g默认终端“ screen.xterm-256color”
设置-g默认终端“ tmux-256color”
- 使用启动tmux
tmux -2。
在所有情况下,Vim继续在tmux内部显示不同的颜色。
xterm-256color版本中看到256色的转义序列(在文件中搜索“ 38; 5;”),但在中看不到screen-256color。例如,无论哪里有\e[38;5;81min xterm-256color(包含256色调色板的颜色#81,中间的蓝色阴影),都screen-256color包含\e[34m(包含8色调色板的标准蓝色)。所以主要的问题是为什么在vim的情况下vim不使用256色调色板TERM=screen-256color。
xterm-256color版本似乎在屏幕上打印了两次,首先是使用旧色,然后是256色调色板。在文件中搜索“ F1”,您将在中找到两个匹配项xterm-256color,第一个匹配项带有\e[34m颜色,第二个匹配项带有\e[38;5;81m。我不知道这是怎么回事。
set -g default-terminal "screen.xterm-256color"在~/.tmux.conf并重新加载在TMUX的配置:对我来说(亮点问题)的工作(<铯>源文件〜/ .tmux.conf)。thx


script,启动vim,退出vim然后退出script的shell,并附加生成的typescript文件?然后TERM=screen-256color vim改为重复相同的步骤。