我在我的vimrc中设置了cursorline。有没有办法让vim只突出显示活动缓冲区中的当前行而不是所有缓冲区?
答案 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通过更复杂的逻辑处理这些异常。