Colorscheme的背景在终端中不正确


13

我导入了日光化的色彩和调色板。我的终端具有正确的颜色和背景,gvim具有正确的颜色和背景,但是vim的背景颜色不正确。文本都是正确的,但背景似乎是纯黑色的。

这是Terminal,GVim和Vim的比较

这是我的.vimrc:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

如果有人对可能导致此问题的任何建议,我将非常有义务。我使用默认终端运行xubuntu。

我还应该提到,浅色选项会导致Vim的背景非常黄。


1
“您的终端具有正确的颜色和背景”是指您遵循有关终端中Vim 的特定建议吗?
安德鲁

2
我确实遵循了建议,@ Andrew。谢谢你
Oberdiear 2015年

@Oberdiear Andrew链接到的建议解释说,您应该将终端设置为使用日光色,而不要使用该g:solarized_termcolors=256选项。如果您很高兴在终端中使用日光色,则此方法效果更好。您的问题文字暗示您已将终端设置为使用日光色(尽管所显示的屏幕截图看起来不像我一样),那么在这种情况下,为什么要使用该g:solarized_termcolors=256设置?
丰富

您正在使用哪个终端?我有这个剧本gnome-terminal
wchargin

@Rich,我想我没有正确设置调色板。您(或其他人)是否知道如何正确设置Xfce Terminal?
Oberdiear 2015年

Answers:


10

我认为这可能是有两个原因的:

  1. 您正在使用的日晒颜色方案未声明ctermfg,也未声明ctermbg要突出显示的任何功能。尝试这种配色方案,在终端和gvim内部看起来应该基本相同,如果是这种情况,那么您可能需要研究使用声明为ctermfg和的配色方案ctermbg

  2. 您可能需要确保终端仿真器支持您尝试显示的颜色:


请注意,这两种情况可能同时发生,但是如果没有有关系统的更多信息,很难诊断出这一点。


desert256工作正常,但我不是一个超级粉丝。我确实相信该TERM变量不正确,但是我不知道如何更改它。
Oberdiear

2
我安装了ncurses-term。然后,我运行了命令。运行它后,所有文本变为灰色,背景为黑色。
Oberdiear 2015年

1
应该是export TERM=xterm+256color,而不是“ color s ”(复数)。另外,我认为应该是xterm-256color,而不是“ ** + ** 256color”;但是我可能将其与日光浴一起使用是错误的。根据此答案# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward 2002年

export TERM=xterm+256color在OSX上,我得到zle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross

我遇到了这个确切的问题,并export TERM=xterm+256colors帮助vim solarized检测并使用了与终端一样的确切背景色。
Shyam Habarakada

5

大家好消息。@Tom和@Rich使我走上了正确的道路。我在这里找到了解决方案。我将.vimrc设置为简单

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

这似乎可以解决所有问题。颜色在字体示例中似乎并不那么亮,但这很可能就是我。对于任何想要使用Solarized色彩方案并使用xfce4-terminal的用户,只需更改terminalrc和.vimrc似乎都可以解决我的主要问题。感谢大家的帮助!


1
您不需要set t_Co在vimrc中使用该行:Vim可以从终端读取此值(设置't_Co'似乎有点像Vim的货运狂热:许多在线用户建议这样做,但实际上并没有真正理解他们试图解决的问题。)
Rich

我只说“ screen”和“ tmux”-这些工具更改了$ TERM变量,因此vim无法读取所需的信息。
NieDzejkob

@NieDzejkob您可以使用终端多路复用器,并且仍然具有正确配置的终端。
丰富

@Rich,您介意解释终端机的正确解决方法是什么?我将tmux与$TERM=screen和一起使用,设置t_Co=16确实确实可以解决视觉问题,但首先我想知道这种关系。
ffledgling

@ffledgling我很乐意。不过,可能需要一些来回的时间,所以请加入我的聊天室
Rich

4

我想这是colorscheme与终端兼容的问题。该插件csaprox奇迹般地解决了许多此类问题。

概要:

很难找到终端Vim的颜色方案。大多数colorchemes被编写为仅支持GVim,而在终端Vim中根本不起作用。

只要该终端支持88或256种颜色,该插件就可以在终端Vim中使仅GVim的colorchemes可以正常工作-而且大多数情况下这些日子都可以。通常,这不需要用户交互(但请参见帮助,以解决不正常的事情)。成功安装此插件后,无论:colorscheme何时使用它,都将发挥其魔力,并使colorscheme Just Work发挥作用。

链接到插件:


1
这是一个有用的插件,但在这里无济于事,因为日光化的色彩方案已经在16色和256色终端下的Vim终端中投入了大量精力。
Rich

4

日光化的终端-Vim配色方案可以两种不同方式之一运行。

  1. 16色模式:日光化仅包含16种颜色,因此在此模式下,您将终端设置为将日光化的颜色用作其16种颜色,而Vim色彩设计仅使用这些颜色。因此,例如,Vim colorscheme将请求终端颜色“ 1”,终端将其显示为十六进制颜色#dc322f。

  2. 256色模式,它从256色调色板中选择最匹配的16种颜色。

作者(和我)强烈建议使用前一种方法,听起来您很高兴使用此方法,因为您声明“终端具有正确的颜色和背景”。

但是,从你的截图看来,你的终端支持正确的颜色设置。(白色不是经过日晒处理的颜色,尽管我没有滴眼液,但是屏幕快照中的其他文本颜色对我来说也不像是经过日晒处理的“紫罗兰色”(#6c71c4)。)

如果从vimrc *中删除了行设置t_Cog:solarized_termcolors,并正确配置了终端颜色,那么您应该会发现16色日光色系将开始起作用。

*这些线转换为日光浴以使用其(不太真实的)256色模式。这应该也是工作,(我怀疑@Jubal是在暗示BCE正确的是这里的问题),但16色模式是优选的,除非你明确地希望在你的终端使用solarized。


我相信您是完全正确的。我认为我没有正确安装调色板。您能指导我完成此过程吗?感谢您的所有帮助,@ Rich。
Oberdiear 2015年

1
看来您的第一个链接已死。
akozi

@azoki感谢您告诉我。看起来Solarized网站正在(重建)中。我暂时更改了链接以指向github存储库。
Rich

3

好像您找到了答案。我有同样的问题,以上均无效果。对我有用的是使用争执terminalrc而不是sgerrand

我的相关内容vimrc很简单:

syntax enable
set background=dark
colorscheme solarized

希望能帮助到某人!


1

所以这对我来说是有效的(在我曾经使用过的所有终端上– xterm,konsole,gnome-terminal,iterm2,roxterm –在Linux和OS X上,以及gvim和macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif

这导致与设置t_Co = 16类似的问题。我可以肯定地说我的调色板有问题,但是我还没有弄清楚。
Oberdiear 2015年

您正在使用哪种终端仿真器?如果我没记错的话,konsole的内置日光化配置不能完全使用,并且需要使用原始日光化存储库中的设置…
Jubal

我使用Xfce终端。
Oberdiear 2015年

我想我已经成功了:尝试将TERM强制为xterm-256color,同时使用终端偏好设置中的solarized预设,而不是使用solarized xfce-terminal git存储库。这与上面的BCE hack一起为我解决了xfce4-terminal的问题。
2015年

(底层的终端仿真字体渲染仍然有些麻烦,我想我已经想起了为什么我回到Linux上普通的xterm了……)
2015年

0

上班很痛苦(我在Linux Mint中使用终端Vim),但是不幸的是我没有写下我所做的每件事的细节。这是我的vimrc的相关部分:

syntax enable
set background=dark
set t_Co=16
colo solarized

也可能值得在GitHub上查看此项目


设置t_Co = 16会使颜色与预期的颜色完全不同。我还使用默认的Xubuntu终端为Xfce-Terminal。
Oberdiear 2015年

@Oberdiear如果将t_Co = 16设置以这种方式影响颜色(未设置g:solarized_termcolors变量),则表示终端颜色设置不正确,无法使用日光浴。您如何设置终端颜色?
丰富

0

对我有用的是删除您这部分的设置

if has('gui_running')
   set background=dark
else
   set background=dark
endif

我正在运行xfce4终端


0

我也有这个问题xfce-terminal

经过一番研究,我发现了这个错误:您$TERM在XFCE终端中设置的任何内容都会被忽略。

我认为这确实是XFCE终端(仍基于GTK + 2)使用的基础(未维护)旧VTE库的错误。切换到隐式使用新VTE库的GTK + 3终端即可解决此问题。

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.