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

17
我已经在我的 vimrc 中设置了 `cursorline`。是否有办法使 vim 只在当前活动缓冲区中高亮显示当前行,而不是所有缓冲区?
4个回答

28

BufEnter / BufLeave 钩子在移动到显示相同缓冲区的相邻窗口时不会触发。我已经成功使用以下方法:

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

7
你可以尝试以下方法:
au BufEnter * setlocal cursorline
au BufLeave * setlocal nocursorline

2
不幸的是,它只有大部分时间能够正常工作。请查看我的答案以获取更好的替代方案。 - Ingo Karkat

3

在Zsolt的回答中,我想补充一点:

au WinLeave * setLocal nocursorline

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

3
所有简单的:autocmd解决方案的缺点在于,您无法像禁用特定窗口的光标行或将其永久应用于(另一个)窗口一样进行例外处理。任何对'cursorline'的更改都将被下一个移动到另一个窗口的操作覆盖。
我的CursorLineCurrentWindow插件通过更复杂的逻辑处理这些异常情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接