Как я могу сделать vim подсветкой текущей строки только для активного буфера?

Я установил линию курсора в моем vimrc. Есть ли способ заставить vim выделять только текущую строку в активном буфере вместо всех буферов?

Ответ 1

Вы можете попробовать:

au BufEnter * setlocal cursorline
au BufLeave * setlocal nocursorline

Ответ 2

Проблема с крючками BufEnter/BufLeave, используемыми в ответе Zsolt, заключается в том, что они не срабатывают при переходе в соседнее окно, которое отображает тот же буфер. Я успешно использовал следующее:

augroup CursorLine
    au!
    au VimEnter,WinEnter,BufWinEnter * setlocal cursorline
    au WinLeave * setlocal nocursorline
augroup END

Ответ 3

В ответ Zsolt я бы добавил:

au WinLeave * setLocal nocursorline

Это улучшает поведение при перемещении между двумя окнами в одном буфере.

Ответ 4

Слабость всех коротких решений :autocmd здесь заключается в том, что вы не можете делать исключения, такие как отключение курсорной строки для определенного окна или постоянство для (другого) окна. Любое изменение 'cursorline' будет перезаписано следующим переходом в другое окно.

My CursorLineCurrentWindow плагин обрабатывает эти исключения с помощью более сложной логики.