Rus*_*ord 49 colors vim terminal tmux
环境:
我最近开始使用 tmux 并观察到 Vim 中的颜色会根据我是在 tmux 内部还是外部运行而变化。下面是 Vim 在查看 Git 差异时在 tmux 外部(左)和内部(右)的屏幕截图:
我的TERM
变量是
xterm-256color
screen-256color
Vim 按预期报告这些终端类型(通过:set term?
):
term=xterm-256color
term=screen-256color
Vim 还报告两个实例都在 256 色模式下运行(通过:set t_Co?
):
t_Co=256
t_Co=256
关于让 Vim 在 tmux 中以 256 色模式运行有很多类似的问题(我找到的最佳答案是这里),但鉴于上述信息,我认为这不是我的问题。
如果我在终端类型设置为的情况下运行 Vim,我可以在 tmux 之外复制问题screen-256color
:
$ TERM=screen-256color vim
Run Code Online (Sandbox Code Playgroud)
所以这让我相信导致颜色差异的终端功能xterm-256color
和screen-256color
终端功能之间存在一些差异。这就引出了标题中提出的问题:终端功能中具体是什么导致 Vim 颜色不同? 我看到了在:set termcap
tmux 内部和外部运行之间的差异,但我很好奇哪些变量实际上导致了行为的差异。
独立于上一个问题,在 tmux 内部或外部运行时是否可以使 Vim 颜色保持一致? 我尝试过的一些事情包括:
~/.tmux.conf
为各种值(有些不符合 tmux FAQ的建议):set -g 默认终端“screen-256color” set -g 默认终端“xterm-256color” set -g 默认终端“screen.xterm-256color” set -g 默认终端“tmux-256color”
tmux -2
。在所有情况下,Vim 继续在 tmux 内部显示不同的颜色。
Vit*_*gov 38
我以前有过类似的问题。Vim 中蓝色的注释很难阅读。在.tmux.conf
我设置这个:
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
并在.vimrc
:
set background=dark
Run Code Online (Sandbox Code Playgroud)
现在它看起来如下并且在 Gnome Terminal 和 Cygwin 中都可以使用:
Abd*_*ull 14
以下设置~/.tmux.conf
对我有用:
# file ~/.tmux.conf
# ...
set -g default-terminal "xterm-256color"
# make colors inside tmux look the same as outside of tmux
# see https://github.com/tmux/tmux/issues/696
# see /sf/answers/2925026471/
set-option -ga terminal-overrides ",xterm-256color:Tc"
# ...
Run Code Online (Sandbox Code Playgroud)
感谢@egmont 对 Vim 输出什么颜色的分析,TERM=screen-256color
启发了我查看 Vim 在这两种场景中使用的配色方案。
Vim 报告它default
在两种情况下都使用配色方案。我觉得这很奇怪,因为default
Fedora 25 ( /usr/share/vim/vim80/colors/default.vim
)上的配色方案似乎与我在TERM=xterm-256color
. 如果我使用:colorscheme default
when明确设置配色方案TERM=xterm-256color
,Vim 的外观将更改为 when TERM=screen-256color
。为了让颜色恢复到我第一次启动 Vim 时的样子,我不得不使用ron
配色方案。进步!
我发现了一个 Ask Ubuntu答案,它表明当 Vim 报告它正在使用default
配色方案时,它不一定意味着default.vim
而是一些特定于主题的配色方案。正如答案所指出的ron
,正如我在上面发现的那样,深色主题(我正在使用)对应于配色方案。(尽管这篇文章是关于 Ubuntu 的,但我假设 OP 使用的是 GNOME。)
我还发现了另一个问题,似乎描述了我遇到的相同问题。在我发布这个问题之前,我在搜索时遇到了它,但是由于某种原因,配色方案并没有让我觉得相关。
我最终做了@LapshinDmitry 在他的回答中所做的,并colorscheme ron
在我的~/.vimrc
文件中明确设置。现在,无论我在 tmux 内部还是外部启动 Vim,颜色看起来都一样。唯一的缺点是,如果我将桌面主题从深色更改为浅色,Vim 不会自动切换到“默认”浅色主题配色方案,这显然是peachpuff
. 我可以接受,因为我不太可能改变我的主题。
我不会接受这个答案,因为我考虑在我~/.vimrc
的解决方法而不是解决方案中明确设置配色方案。如果有人可以解释为什么 Vim 会根据 的值加载不同的“默认”配色方案TERM
,我会很乐意接受这个答案,因为我对了解根本原因更感兴趣。我怀疑这与 Vim 如何解释两个 terminfo 文件之间的终端功能有关。
归档时间: |
|
查看次数: |
31442 次 |
最近记录: |