有谁知道在搜索后是否有匹配项或匹配项时如何突出显示整行。
pe 我搜索 /user
现在,如果有匹配项,我想突出显示整行。
编辑
我想在搜索突出显示中使用突出显示。
我不想使用突出显示组。
突出显示行的替代方法可能是使用quickfix
列表。例如,执行以下操作会将与模式匹配的所有行/user/
放入当前文件 ( %
) 的快速修复列表中。
:vimgrep /user/ %
您可以通过执行在单独的窗口中显示quickfix
列表的内容:copen
。:cnext
您可以通过、:cprev
和 朋友在匹配的行之间移动。我个人推荐 Tim Pope 的优秀unimpaired.vim插件,以提供一些相当漂亮和自然的感觉映射,例如[q
并]q
在quickfix
列表中移动。您还可以添加一个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
没有任何参数的情况下执行。
我个人更喜欢使用:vimgrep
和quickfix
列表,但您的需求可能与我的不同。
如需更多帮助,请参阅:
:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match
如果你使用
: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
.
我不知道这是否适合您:
首先你需要定义一个亮点group
:例如userline
:highlight userline ctermbg=darkred guibg=darkred
那么你可以:
:match userline /.*user.*/
所有包含“用户”的行都将突出显示。