如何让vim仅在活动缓冲区上突出显示当前行?

时间:2012-08-18 09:05:17

标签: vim

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

4 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:7)

您可以尝试:

au BufEnter * setlocal cursorline
au BufLeave * setlocal nocursorline

答案 2 :(得分:3)

对于Zsolt的答案,我想补充一下:

au WinLeave * setLocal nocursorline

这改善了在同一缓冲区上的两个窗口之间移动时的行为。

答案 3 :(得分:3)

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

我的CursorLineCurrentWindow plugin通过更复杂的逻辑处理这些异常。