Vim光标行在分割之间的自动命令中没有变化

时间:2018-10-29 04:03:22

标签: macos vim

我想在vim中的活动分割和非分割之间更改光标线的颜色。

所以我尝试了

augroup CursorLine
    au!
    au VimEnter,WinEnter,BufWinEnter * highlight CursorLine ctermfg=black ctermbg=green 
    au WinLeave * highlight CursorLine ctermfg=NONE ctermbg=red 
augroup END

然后我打开vim,进行垂直拆分:vsp file,然后在两个拆分之间切换,但是两个窗格仍然具有绿色背景,并且不活动的窗格在离开时没有切换为红色。

这些命令怎么了?

1 个答案:

答案 0 :(得分:1)

突出显示组的作用域是全局的。如果更改颜色或一种的格式,则所有事件将被更新(在下一个屏幕上重画)。为了支持活动/非活动元素的不同突出显示,您需要为此提供Vim的明确支持。对于状态行(以hl-StatusLinehl-StatusLineNC高亮组的形式)确实存在,但光标线则不存在。

在您的情况下,WinLeave autocmd将立即在下一个窗口后接WinEnter,因此您尝试更改为红色基本上会被忽略。

如果您想禁用非活动窗口的光标线,则可以这样做,因为'cursorline'选项是本地窗口选项。我的CursorLineCurrentWindow plugin确实很容易。