Vim 有匹配项时高亮显示整行
是否有人知道如何突出显示整行,如果有或如果有匹配后进行搜索 p、 e.我搜索/user 现在,如果有匹配项,我想突出显示整行 编辑Vim 有匹配项时高亮显示整行,vim,line,match,highlight,Vim,Line,Match,Highlight,是否有人知道如何突出显示整行,如果有或如果有匹配后进行搜索 p、 e.我搜索/user 现在,如果有匹配项,我想突出显示整行 编辑 我想在搜索突出显示中使用突出显示。 我不想使用突出显示组 我不知道你是否可以接受: 首先,您需要定义突出显示的组:例如用户行 :highlight userline ctermbg=darkred guibg=darkred 然后你可以: :match userline /.*user.*/ 所有包含“用户”的行都将突出显示。突出显示行的另一种方法可能是使用qu
我想在搜索突出显示中使用突出显示。
我不想使用突出显示组 我不知道你是否可以接受: 首先,您需要定义突出显示的
组
:例如用户行
:highlight userline ctermbg=darkred guibg=darkred
然后你可以:
:match userline /.*user.*/
所有包含“用户”的行都将突出显示。突出显示行的另一种方法可能是使用
quickfix
列表。例如,执行以下操作将把与模式匹配的所有行放入当前文件(%
)的快速修复列表中
通过执行:copen
,可以在单独的窗口中显示快速修复
列表的内容。您可以通过:cnext
、:cprev
和朋友在匹配行之间移动。我个人推荐Tim Pope的优秀插件,它提供了一些相当不错的、自然的感觉映射,如[q
和]q
,以便在quickfix
列表中移动。您还可以添加一个g
标志来查找每行的多个匹配项,并将它们添加到quickfix
列表中
您可能希望映射到此vimgrep
命令,以使其更快一点。我个人在我的~/.vimrc
nnoremap <leader>/ :vimgrep/<c-r>//g %<cr>:copen<cr>
但是,您可能真的只想用匹配项高亮显示行,而不是使用quickfix
列表。我建议像这样使用:match
:match Search /.*user.*/
您可以使用您想要的任何突出显示组。我选择了Search
,因为它似乎是合适的。要关闭高亮显示,只需执行:match
,不带任何参数
我个人更喜欢使用:vimgrep
和quickfix
列表,但您的需求可能与我的不同
有关更多帮助,请参阅:
:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match
如果你使用
:let @/ = '.*\%(' . @/ . '\m\).*'
这应该适用于大多数regexp模式(例如,括号负责
\\\124;
分支)。您可以对其进行细化,以识别^
和$
,以及像\V
这样的神奇修饰符。感谢您回复Kent。不,那不是我想要的。我希望像搜索高亮显示一样高亮显示该行。原因是我有很多脚本,我可以用它们对搜索匹配进行操作。我正试着把它们应用到整个生产线上。希望我说清楚。(我将把这个添加到我的问题中)Tnx用于vimgrep信息。我用它,但它不是我想要的。我只想用一根火柴突出这几行。。。我曾经尝试过/.*搜索项。*
,但它并不适用于所有情况,也就是说,它不适用于大量的正则表达式搜索。谢谢你,Ingo,这似乎有效。你用它来识别^和$是什么意思?是的,我在正则表达式中也使用了大量的\V和\%V。您认为您的解决方案不适用于这些吗?^和$只有在它们出现在开头/结尾(可能在分组括号内)时才是特殊的,所以*\(^…
将匹配一个文本^
,不再是行的开头。您必须检查@
,并调整连接。\V
更改尾随*
的含义;然后它必须是\.*
。我在答案中添加了一个中和\m
。谢谢。你会怎么做您的代码如果执行搜索,然后选择一个文本块,并且只想突出显示此文本块中具有匹配项的整行?我尝试将\%V(
放在代码之前,\)
放在代码之后,但不起作用。嗯,这是另一个问题。您必须拆分(文本,“\n”)
,按照我的回答修改每个部分,然后重新加入(文本“\n”)。
:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match
:let @/ = '.*\%(' . @/ . '\m\).*'