2

有谁知道在搜索后是否有匹配项或匹配项时如何突出显示整行。

pe 我搜索 /user

现在,如果有匹配项,我想突出显示整行。

编辑
我想在搜索突出显示中使用突出显示。
我不想使用突出显示组。

4

3 回答 3

4

突出显示行的替代方法可能是使用quickfix列表。例如,执行以下操作会将与模式匹配的所有行/user/放入当前文件 ( %) 的快速修复列表中。

:vimgrep /user/ %

您可以通过执行在单独的窗口中显示quickfix列表的内容:copen:cnext您可以通过、:cprev和 朋友在匹配的行之间移动。我个人推荐 Tim Pope 的优秀unimpaired.vim插件,以提供一些相当漂亮和自然的感觉映射,例如[q]qquickfix列表中移动。您还可以添加一个g标志来查找每行的多个匹配项并将它们也添加到quickfix列表中。

您可能希望映射到此 vimgrep命令以使其更快一些。我个人在我的~/.vimrc

nnoremap <leader>/ :vimgrep/<c-r>//g %<cr>:copen<cr>

使用:vimgrep命令的一个缺点是它需要一个保存的文件,所以必须先保存未保存的缓冲区。您可以通过使用 和 的组合来克服这个问题:global:cgetexpr如下所示。

:cexpr []
:g//caddexpr expand("%").":".line(".").":".getline(".")

但是,也许您真的只想用匹配突出显示行而不是使用quickfix列表。我建议:match像这样使用

:match Search /.*user.*/

你可以使用任何你想要的高亮组。我选择Search它看起来合适。要关闭突出显示,只需在:match没有任何参数的情况下执行。

我个人更喜欢使用:vimgrepquickfix列表,但您的需求可能与我的不同。

如需更多帮助,请参阅:

:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match
于 2012-11-14T18:49:52.673 回答
2

如果你使用

:let @/ = '.*\%(' . @/ . '\m\).*'

that should work for most regexp patterns (e.g. the bracketing takes care of \| branches). You could refine that to recognize ^ and $, and magic modifiers like \V.

于 2012-11-15T07:48:56.810 回答
1

我不知道这是否适合您:

首先你需要定义一个亮点group:例如userline

:highlight userline ctermbg=darkred guibg=darkred

那么你可以:

:match userline /.*user.*/

所有包含“用户”的行都将突出显示。

于 2012-11-14T17:26:30.463 回答