vim colorschemes不改变背景颜色

时间:2010-12-01 15:03:35

标签: vim color-scheme

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

在某些方案中,某些背景会改变颜色,但包含文字的线条的空间右侧仍保持白色。

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

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

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

11 个答案:

答案 0 :(得分:43)

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

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

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

答案 1 :(得分:28)

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

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

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

“ - 确保你使用的是256色的控制台终端;并非它们全部都有(特别是在Mac上)。你可能需要通过在你的”set t_Co = 256“上明确强制Vim使用它.vimrc文件。 - Windows控制台很好......完全不受支持,只有16种颜色,所以它很乱“

答案 2 :(得分:14)

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

Vim looks with molokai theme before fixing TERM variable

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

Vim looks with molokai theme after fixing TERM variable

答案 3 :(得分: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  

答案 4 :(得分:5)

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

set background=light

set background=dark

不确定这些的限制是什么。我不认为那些在终端工作。

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

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White

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

对于ctermbg和ctermfg,您可以输入颜色名称,但我认为只有相当有限的数字:  黑色 深蓝 深绿色 深青绿 深红 深洋红 布朗,DarkYellow LightGray,LightGrey,灰色,灰色 DarkGray,DarkGrey 蓝色,浅蓝色 绿色,LightGreen 青色,LightCyan 红色,LightRed 洋红色,LightMagenta 黄色,淡黄色 白

否则,您应该能够使用0到255之间的数字代替颜色名称。或者这个脚本提供了粗略的想法,并让您看到如何设置使用更多的颜色名称: Vim script with color settings

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

Colorscheme support for cterm

Does the overall settings for the terminal window have something to do with it?

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

答案 5 :(得分:4)

我遇到了同样的问题,发现这个问题的答案实际上是三重的,只修复三个中的两个是不够的。你需要:

  1. 您终端中的256色支持 - 使用默认设置的Putty确实有此

  2. Vim必须认识到终端具有256色功能:.vimrc中的“set t_Co = 256”将会这样做

  3. 配色方案需要支持带有ctermbg和ctermfg属性的彩色终端,而不仅仅是gui * -versions。 http://www.vim.org/scripts/script.php?script_id=2682应该能够自动提供这些,而CSApprox我肯定会使用它,但需要+ gui编译的Vim或最近的Vim版本(7.3或更新版本)。

  4. 第三个似乎是最常错过的要求。我今天早上在这个问题上写了一篇关于这个问题的短篇小说:http://codeandlife.com/2013/09/22/vim-colorschemes-with-putty-aka-gui-vs-xterm-color256/

    在尝试不同设置时发生在我身上的最终问题是,当颜色确实有效时,只有带文字的屏幕区域才有正确的背景颜色。重新检查Putty Terminal设置“使用背景颜色擦除屏幕”为我修复了最后一期。

答案 6 :(得分:3)

  

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

是的,终端参数会覆盖vim参数(至少在OSX和iTerm中)。例如,我在/ Users / [username] / .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 $*)
}

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

BR,
尤哈

答案 7 :(得分:2)

您需要将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

答案 8 :(得分:0)

这适用于切换背景:

colorscheme hemisu
function! g:ToggleBackground()
  if &background != 'dark'
    set background=dark
  else
    set background=light
    colorscheme hemisu
  endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>

同时尝试将浅色背景设置为ctermbg=231,以便tmux更好地处理它。

答案 9 :(得分:0)

如果您使用 Vim 通过 SSH

,请使用此规则
  1. 添加到您当地的.bashrc

    export TERM=xterm-256color
    
  2. .bashrc移除任何TERM个定义。

  3. 如果您在本地和远程使用相同的.bashrc,请使用临时环境变量,从不全局设置TERM

    alias color-ssh='TERM=xterm-256color ssh user@host'
    

答案 10 :(得分:0)

我也遇到类似的问题,即压痕指南(nathanaelkane的vim-indent-guides)的背景色无法显示在Windows Cygwin的薄荷终端中。

我在〜/ .minttyrc中用一行Term=xterm-256color解决了这个问题(相当于通过mintty的Options GUI设置:Terminal-> Type-> xterm-256color。这产生了export TERM=xterm-256color如果没有此设置,则薄荷味默认为TERM =“ xterm”,这将导致vim的t_Co=8(而不是t_Co=256)并且无法显示某些背景色。

清单:

    bash中的
  1. echo $TERM应该为xterm-256color
  2. 在vim中,:set t_Co应该给t_Co=256
相关问题