tmux中的Vim显示错误的颜色


57

我安装了Ubuntu 11.10。然后下载Gnome Terminal的Solarized主题。在终端上,我的vim看起来不错:插件vim-powerline正确显示,语法以正确的颜色突出显示。但是当我运行tmux并运行vim时-语法高亮仅使用一种基本颜色,而vim-powerline不显示任何颜色。我看了关于vim-powerline的FAQ,解决方案应该是.tmux-config中的这一行:

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

但这是行不通的。我查看了TERM,它返回了“ xterm”,所以我尝试了:

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

但这也无济于事。

这是.tmux.config中的唯一行。在.vimrc中,我有以下几行:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized

不知道为什么你没有投票,甚至没有那些必须从自己的答案中获得投票的人。向我+1。这个问题很合理,通过找到它也帮助我解决了自己的问题。
— 0xC0000022L13年

Answers:


54

使用以下标志启动tmux可以为我解决此问题:

tmux -2

从tmux手册页:

-2强制tmux假定终端支持256色。


1
好提示。当Cygwin版本的屏幕开始崩溃时,vim很快又切换回tmux。爱它。
— Grantbow

1
仅供参考-这是唯一适用于tmux 2.3和最新电源线的东西。vim和tmux状态栏中的颜色确实很奇怪。
— Plasty Grove

28

我在使用Byobu 5.17和tmux 1.5的Ubuntu 10.04 LTS(使用来自GitHub存储库中的最新版本的Solarized)上遇到了相同的问题。

通过$TERM在.bashrc文件中指定,我可以部分解决此问题:

export TERM="xterm-256color"

同样,启动板上似乎存在一个bug,但尚未解决: byobu无法正确显示dircolors


2
这是唯一对我有用的东西!
— 宁静

还使用tmux 2.0在Ubuntu 14.04上工作
— dukedave '16

这也是OS X上的解决方案哈哈
— Jay

27

这对我有用

在 .tmux.conf

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

在 .vimrc

set term=screen-256color

删除.vimrc的旧条款价值,相信我,这会起作用


1
对我不起作用。tmux 1.8,vim 7.4.1816,具有内核3.13.0-92-generic的ubuntu x86_64。仅供参考。
— fstang

1
没有.vimrc设置,只有.tmux.conf,它对我有用。
— 盖森·桑托斯

.tmux.conf设置对我有用!
— hesselbom

4

终端类型应在〜/ .tmux.conf中设置为screen-256color。它告诉tmux如何设置TERM环境变量,因此它不适用于当前会话-启动一个新会话,然后进行测试。

如果仍然不起作用,可以使用以下命令运行Vim:

TERM=screen-256color vi

设置环境变量仅用于一次性vi执行。

如果那不能使vim显示所有颜色,请测试您的终端(我不确定您是否仅使用一个终端仿真器进行测试)是否已编译为支持256调色板-从以下位置下载并运行以下Perl脚本:有问题的终端仿真器。

http://scie.nti.st/dist/256colors2.pl

PS。我认为您已经纠正了注意到的错字jordanbrock。


2

正如Marcin Kaminski所解释的,如果TERM=screen-256color vim <filename> 对您有用,则只需在您的.bashrc

TERM=screen-256color

然后在您的.tmux.conf:

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

我也有同样的问题,这对我有用。


这是唯一为我工作的软件(tmux 1.8)。
— Yamaneko

实际上,我刚刚进行了测试,并且仅更改TERM=screen-256color就足够了,与将tmux设置为screen-256color或无关xterm-256color。谢谢!
— Yamaneko

1

您的最后一行有一个错字.vimrc。

它应该是 colorscheme solarized

不确定是否有帮助:)


0

您可能在此答案中记录了相同的问题。

基本上,.tmux.conf设置可以正常工作,并将TERM其设置为screen-256color,但是tmux会打开bash并调用您的.bashrc,后者将设置TERM为其他值(可能是xterm-256color)。

解决方案是TERM在终端设置中进行设置,而不是在.bashrc中进行设置。如果这不是一个选择,则可以TERM在.bashrc内检查,如果已经更改,则不进行更改screen-256color。


0

在启动tmux的shell中,检查$TERM是否为xterm-256color或screen-256color。了解如何更改$ TERM:

作为替代方案,如圣鲭鱼所说,您可以通过以下方法将tmux强制为256色:

$ tmux -2

0

[Solucion] [1]可能会干扰您的视力,并使Vim长时间不宜使用。

您可以通过在Vim中运行:set term = screen-256color或在TERM = screen-256color环境下重新启动Vim来解决此问题,如一些专家所建议的那样:http : //sunaku.github.io/vim-256color-bce.html


2
[Solucion] [1]是什么意思?您是要参考还是链接到另一个答案?答案并非总是以相同的顺序出现。我建议扩大此范围,以阐明您所说的内容“可能会干扰您的视力,并使Vim长时间不宜使用”。
— 伊利亚·卡根

0

在您的.bashrc或.zshrc中,只需添加

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

并且从tmux -2开始


0

对于那些在颜色上花费时间,并且如果晒过的vim无法在tmux上运行,或者厌倦了寻找vim的颜色的用户,这应该在一分钟内就能完成,也可以从官方资料库中获得,如下所示。

yum install vim-jellybeans

要么

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

这将通过美丽的颜色设置来修复它,并且图案是如此集中和有用,如果您还尝试设置那些突出显示,搜索的单词,就是这样。一切都已经准备好使用。您甚至可以在配置文件中更改颜色。

如果除了简单的快速解决方案之外,您不想安装其他任何东西,请忽略上面的内容并在vim中尝试

:colo ron 您也可以将“ ron”替换为以下内容,甚至还原为 solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

并保存在.vimrc中

colo ron
syntax on

给出负面反馈的人。让我听到正确的原因。
— Seandex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.