我在设置光标线突出显示时遇到了类似的问题,但是我的原因是我在vim退出期间用于保存会话信息的mksession命令所致。如果该会话没有任何文件参数运行,则它将在程序启动期间自动恢复。
如果任何人都具有.vimrc这样的设置,则可以将以下内容添加到.vimrc以正确设置光标线突出显示:
function s:SetCursorLine()
set cursorline
hi cursorline cterm=none ctermbg=darkblue ctermfg=white
endfunction
autocmd VimEnter * call s:SetCursorLine()
关于为什么这样做的一些解释。连同各种缓冲区和窗口信息,mksession保存当前的colorcheme名称。通过会话还原在程序启动过程中将其还原。但是,由于会话还原通常是在运行.vimrc之后完成的(通常使用通过'autocmd VimEnter *'调用的函数),因此默认情况下,.vimrc中的光标线突出显示设置将针对还原的colorcheme进行重置。
通过autocmd调用的上述函数将在所有初始化完成后运行,因此成功设置了光标线突出显示。
HTH。