12

我在我的 vimrc 中设置了 cursorline。有没有办法让 vim 只突出显示活动缓冲区中的当前行而不是所有缓冲区?

4

4 回答 4

22

Zsolt 的答案中使用的BufEnter/BufLeave钩子的问题是,当移动到显示相同缓冲区的相邻窗口时它们不会触发。我已成功使用以下内容:

augroup CursorLine
    au!
    au VimEnter,WinEnter,BufWinEnter * setlocal cursorline
    au WinLeave * setlocal nocursorline
augroup END
于 2012-08-18T12:28:38.963 回答
7

你可以试试:

au BufEnter * setlocal cursorline
au BufLeave * setlocal nocursorline
于 2012-08-18T09:29:49.123 回答
3

To Zsolt's answer I would add:

au WinLeave * setLocal nocursorline

This improves the behavior when moving between two windows on the same buffer.

于 2012-08-18T10:51:46.360 回答
3

这里所有简短:autocmd解决方案的弱点是您不能例外,例如禁用特定窗口的光标线或使其永久用于(另一个)窗口。任何更改都'cursorline'将被下一次移动到另一个窗口所覆盖。

我的CursorLineCurrentWindow 插件通过更精细的逻辑处理这些异常。

于 2012-08-18T20:40:32.417 回答