环境:
- 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;81m
in 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
改为重复相同的步骤。