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.0Ubuntu 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-256colorscreen-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.