У меня была аналогичная проблема с настройкой выделения строки курсора, но моя была связана с командой mksession, которую я использовал для сохранения информации о сеансе во время выхода из vim. Затем этот сеанс автоматически восстанавливается при запуске программы, если он запускается без каких-либо аргументов файла.
Если у кого-то есть такая настройка .vimrc, вы можете добавить следующее в .vimrc, чтобы правильно установить выделение строки курсора: -
function s:SetCursorLine()
set cursorline
hi cursorline cterm=none ctermbg=darkblue ctermfg=white
endfunction
autocmd VimEnter * call s:SetCursorLine()
Небольшое объяснение того, почему это работает. Наряду с различной информацией о буферах и окнах mksession сохраняет текущее имя цветовой схемы. Это восстанавливается во время запуска программы путем восстановления сеанса. Однако, поскольку восстановление сеанса обычно выполняется после запуска .vimrc (обычно с использованием функции, вызываемой через 'autocmd VimEnter *'), настройка выделения строки курсора в .vimrc сбрасывается по умолчанию для восстановленной цветовой схемы.
Вышеупомянутая функция, вызываемая через autocmd, будет запущена после завершения инициализации и, следовательно, успешно устанавливает выделение строки курсора.
HTH.