Vim突出显示设置本地

时间:2018-03-15 14:03:14

标签: vim

我想询问是否可以在缓冲区/窗口中定义突出显示本地,以及任何其他vim选项。到目前为止,我在.vimrc中的这个小组,以及#34;突出显示"活动窗口。因此,只有活动窗口才能获得光标。

augroup CursorLine
  autocmd!
  autocmd WinEnter * set cursorline
  autocmd WinLeave * set nocursorline
augroup END

现在我想做一些与背景相似的事情。纯黑色适用于非活动窗口,黑色适用于活动窗口。我的方法是:

augroup BackgroundSwitch
  autocmd!
  autocmd WinEnter * highlight Normal ctermbg=235 ctermfg=15  guibg=#ff0000 guifg=#FFFFFF cterm=NONE  gui=NONE
  autocmd WinLeave * highlight Normal ctermbg=16  ctermfg=15  guibg=#ff0000 guifg=#FFFFFF cterm=NONE  gui=NONE
augroup END

不幸的是,这总是让所有窗口背景都像活动窗口一样。我猜WinLeave在WinEnter之前被抛出,所以它很快就会显示出来(不适合我)。设置突出显示而不是选项会影响此 Vim 实例中的所有窗口 那么有可能,这个亮点只在本地设置,所以我得到了希望的行为?
谢谢!

1 个答案:

答案 0 :(得分:1)

对于人们发现这个问题并且懒得阅读评论:

  • 更改突出显示始终为全局,不能仅为其更改 范围。
  • Diminactive为此提供了一个黑客。但是这个插件缺少以下几点:
    • “背景”仅在行中更改,其中包含文本(包括新行字符)。
    • 非活动窗口中的搜索结果等背景突出显示(整个结果)会导致文本中出现难看的空白。
    • 理论上重绘速度较慢,这与你可能在后台运行的所有其他插件相加以处理缓冲区(在我的计算机上无法识别)。