2

我希望我的快速修复窗口对光标的当前行进行一些突出显示。

经过一番研究,我发现我可以使用set cursorline和配置当前行的一般外观highlight CursorLine term=bold cterm=bold guibg=Grey40

现在,我只希望当我在快速修复窗口中时。所以我开始将这两行包装在一个函数中,并使用自动命令调用该函数:

au QuickFixCmdPre * call EnableSearchHighlighting()

到现在为止还挺好。由于我至少搜索一次后仍然激活了突出显示,因此我需要再次禁用该效果。这就是我被困的地方......

我编写了另一个函数,并在-Eventset nocursorline上调用这个函数。QuickFixCmdPost但由于某种原因,这打破了一切。现在我不会再突出显示,即使在快速修复窗口中也是如此。

感觉就像事后事件覆盖了事前事件。我不确定这里还有什么可以尝试的。

也许任何人都可以帮助我,甚至首先有另一种突出显示的方法?

这是我的 .vimrc 中的完整代码:

function EnableSearchHighlighting()
  set cursorline
  highlight CursorLine term=bold cterm=bold guibg=Grey40
endfunction

function DisableSearchHighlighting()
  set nocursorline  
endfunction

au QuickFixCmdPre * call EnableSearchHighlighting()
au QuickFixCmdPost * call DisableSearchHighlighting()

谢谢阅读。:)

4

1 回答 1

3

您的方法有很多问题,但主要问题(以及它不起作用的原因)是在您切换到错误窗口之前,每个 quickfix 命令都运行QuickFixCmdPre和。QuickFixCmdPost

将此添加到文件中ftplugin/qf.vim

setlocal cursorline

然后将highlight定义添加到您的vimrc, 任何函数之外或autocmd:

highlight CursorLine term=bold cterm=bold guibg=Grey40
于 2016-11-20T19:35:42.667 回答