vim colorschemes不改变背景颜色

Veg*_*gar 36 vim color-scheme

我尝试在网上应用各种配色方案.无论我选择何种方案,背景都保持白色,即使应用方案的屏幕截图显示背景应该是彩色的.

在某些方案中,某些背景会改变颜色,但包含文本的线条的空间右侧仍为白色.

我在Mac上使用Vim 7.2.我刚开始搞乱非gui应用程序,所以一切都应该是开箱即用的.

终端窗口的整体设置是否与它有关?

运行macvim时,一切看起来都不错.它只有从终端启动vim时才看起来很奇怪..

cpt*_*oop 43

我在.vimrc中有这个,它在使用PuTTY时解决了这个问题.

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE
Run Code Online (Sandbox Code Playgroud)

在.vimrc中的ctermbg设置之前加载colorscheme很重要,因为它们需要覆盖colorscheme设置的相同设置.这也意味着你不能在Vim运行时切换colorscheme并期望它工作.


Her*_*itz 28

我正在添加第二个答案,因为它与我的第一个答案非常不同,可能指向实际问题.

如果你在这里查看colorscheme的实际网站: Molokai网站

你会看到一个与你非常相似的问题.这里给出了答案,建议:set t_Co=256在vimrc中尝试命令,看看它是否修复了一些问题:

" - 确保你使用的是能够支持256色的控制台终端;并非所有这些都能做到(特别是在mac上).你可能需要通过在你的.vimrc文件上执行"set t_Co = 256"来强制使用它. - Windows控制台很好......完全不受支持,只有16种颜色,所以它很乱


Dav*_*idG 14

在linux中我有export TERM=xterm-256color我的.bashrc.这导致vim看起来像这样(设置后set t_Co=256):

在修复TERM变量之前,Vim用molokai主题看

当我从我的线上删除该线.bashrc并打开一个新的终端(exec bash没有这样做)这就是我得到的:

在修复TERM变量后,Vim以molokai主题看起来


Xav*_* T. 7

终端通常限制为256种颜色,而GUI仅受桌面环境颜色深度的限制,通常为2 ^ 32.

因此即使周围有很多vim配色方案,它们通常也是为GUI而设计的,并不适用于终端版本.

如果你看一下vim.org上的配色方案,通常会提到GUI或256.所以你必须根据上下文选择使用哪个.

要将GUI方案转换为终端,您可以使用以下插件: CSApprox.

您还可以根据上下文使用不同的colorscheme,在.vimrc中添加以下内容:

if has("gui_running")  
    colorscheme [using any color you want]  
else  
    colorscheme [using 256 colors]  
endif  
Run Code Online (Sandbox Code Playgroud)


Her*_*itz 5

我认为问题可能是colorscheme改变默认颜色的方式.我看了一些仅仅通过以下方式设置默认值的colorschemes:

set background=light
Run Code Online (Sandbox Code Playgroud)

要么

set background=dark
Run Code Online (Sandbox Code Playgroud)

不确定那些有什么限制.我不认为那些在终端工作.

在任何情况下,您都应该能够使用"正常"突出显示在终端中手动设置背景.在colorscheme文件中的大多数'hi'命令之前将其插入一个位置,它应该提供它们将使用的默认值.例如:

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White
Run Code Online (Sandbox Code Playgroud)

将ctermfg(彩色终端前景)和ctermbg(彩色终端背景)更改为您想要的任何颜色(或者您希望在colorscheme中看到但现在看不到的任何颜色).(请记住,如果colorscheme已经有hi Normal的设置,那么这可能不是你的问题.)

对于ctermbg和ctermfg你可以输入颜色名称,但我认为只有相当有限的数字:Black DarkBlue DarkGreen DarkCyan DarkRed DarkMagenta棕色,DarkYellow LightGray,LightGrey,灰色,灰色DarkGray,DarkGrey Blue,LightBlue Green,LightGreen青色,LightCyan Red ,LightRed Magenta,LightMagenta黄色,浅黄色

否则,您应该能够使用0到255之间的数字代替颜色名称.或者这个脚本给出了粗略的想法,让你看看如何设置使用更多的颜色名称: 带有颜色设置的Vim脚本

此外,还有许多脚本可以帮助您使用或转换为gui编写的colorschemes,以便与cterm一起使用.例如,:

Colorscheme支持cterm

Does the overall settings for the terminal window have something to do with it?
Run Code Online (Sandbox Code Playgroud)

也许,但我很确定正确编写的Vim colorscheme会覆盖你所做的任何终端设置.至少他们在Windows和Ubuntu上为我做...


小智 5

您需要添加set termguicolors到 ~/.vimrc

我测试了t_Co=256其他选项,但没有一个有效,仅set termguicolors

之后你可以使用命令set bg=lightset bg=dark查看女巫一个看起来更好(一些 vim 配色方案接受这两个选项)。

以下是与 termguicolors 兼容的终端列表:https://gist.github.com/XVilka/8346728#now-supporting-true-color


Juh*_*uha 3

终端窗口的整体设置是否与此有关?

是的,终端参数会覆盖 vim 参数(至少在 OSX 和 iTerm 中)。例如,我在 /Users/[用户名]/.bashrc 中有以下脚本

setBackground() {  
  osascript -e "tell application \"iTerm\"  
    set current_terminal to (current terminal)  
    tell current_terminal  
      set current_session to (current session)  
      tell current_session  
        set background color to $1  
      end tell  
    end tell  
  end tell"  
}  

vim() {
       (setBackground "{65025,65025,65025}" &)
       (exec vim $*)
}
Run Code Online (Sandbox Code Playgroud)

上面重新映射终端 vim 命令以在执行 vim 之前执行背景颜色更改。背景颜色函数是applescript(我从某处复制了脚本......)。它适用于 iTerm。我相信您可以调整它以与终端一起使用(苹果产品+苹果脚本 - >应该工作)。

br,
尤哈