Vim,colourschemes和设置ctermbg无法正常工作

时间:2013-03-27 17:39:56

标签: vim highlight color-scheme

我想在Vim中突出显示光标,具体取决于我是处于插入模式还是处于命令模式(在Ubuntu的Gnome Terminal / Gnu Screen中使用它),有些人建议我应该在.vimrc中使用这些命令< / p>

au InsertEnter * set nocursorline
au InsertLeave * set cursorline
hi cursorline cterm=underline ctermbg=243

如果我直接在Vim中使用它们,所有上述命令都可以正常工作(暂时使用设置直到下次重启)。

我还在.vimrc中加载​​了一个名为“wombat”的colourscheme,但是在.vimrc中使用相同的命令时会出现几个问题:

  • 如果我在加载方案后放入ctermbg命令(正如我所知),该方案会以某种方式被忽略/未加载/不使用或其他任何方式。意思是,vim提出了一些标准颜色。

  • 如果我在加载方案之前放置了ctermbg命令,则突出显示不起作用,但方案已加载。

  • 如果我只尝试设置cterm,则加载该方案,但不会发生下划线。无论最后一个命令如何。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您收到错误,因为您的colorscheme会覆盖您的自定义设置。我会建议如下:

  1. 将两行留在vimrc中

    au InsertEnter * set nocursorline
    au InsertLeave * set cursorline
    
  2. 分叉您的配色方案,给它一个新名称,然后在vimrc

    中引用它
    colorscheme wombat-custom
    
  3. 破解计划。

    • 找到有关cursorline的代码,将其ctermbg修改为您想要的任何内容
    • 另请注意Normal ctermbg。这是正常的背景,最好是相似但与光标不同,这样你就可以知道你是否处于插入模式。
  4. 旁注:如果您希望您可以版本控制整个colorscheme文件夹,以便您知道如何在必要时返回。我的做法是版本控制整个.vim文件夹,但设置有点复杂。

答案 1 :(得分:0)

当我尝试它时,Wombat的行为与我使用的任何其他颜色方案不同,因此它可能只是在GUI之外被打破,因为它不能直接定义任何cterm高光。

但是,您不应该破解colorscheme文件。 ColorScheme自动命令在加载colorscheme后运行命令,因此如果您对所使用的每个colorscheme都想要这种行为(因为这将覆盖所有这些),那么您可以添加另一行来强制它:

hi cursorline cterm=underline ctermbg=243
au ColorScheme * hi cursorline cterm=underline ctermbg=243

此外,我注意到当我切换到插入模式时,InsertEnter / InsertLeave自动命令没有立即正确地绘制线,所以我将自动命令更改为:

au InsertEnter * set nocursorline | redraw!
au InsertLeave * set cursorline | redraw!

这使得一切看起来都适合我。