1

我想在 Vim 中突出显示光标线,这取决于我是处于插入模式还是命令模式(在 Ubuntu 上的 Gnome 终端/Gnu 屏幕中使用它),有些人建议我应该在 .vimrc 中使用这些命令

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

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

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

  • 如果我在加载方案后放置 ctermbg-command(我应该这样做),该方案会以某种方式被忽略/未加载/未使用或其他什么。意思是,vim 提供了一些标准颜色。

  • 如果我在加载方案之前放置 ctermbg-command,则突出显示不起作用,但会加载方案。

  • 如果我只尝试设置 cterm,那么会加载该方案,但不会出现下划线。不管哪个命令最后出现。

有什么想法吗?

4

2 回答 2

0

您收到错误是因为您的配色方案覆盖了您的自定义设置。我将建议以下内容:

  1. 将这两行留在 vimrc

    au InsertEnter * set nocursorline
    au InsertLeave * set cursorline
    
  2. fork 你的配色方案,给它一个新名字,然后在 vimrc 中引用它

    colorscheme wombat-custom
    
  3. 破解计划。

    • 找到有关的代码cursorline,将其修改ctermbg为您想要的任何内容
    • 还要注意Normal ctermbg。是正常的背景,最好和cursorline相似但不同,这样你就知道你是否处于插入模式。

旁注:如果您愿意,您可以对整个颜色方案文件夹进行版本控制,以便在必要时知道如何返回。我的做法是对整个 .vim 文件夹进行版本控制,尽管设置更复杂一些。

于 2013-03-28T02:57:31.520 回答
0

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

不过,您不需要破解颜色方案文件。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!

这让一切看起来都对我有用。

于 2016-02-18T03:14:22.963 回答