Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 有匹配项时高亮显示整行_Vim_Line_Match_Highlight - Fatal编程技术网

Vim 有匹配项时高亮显示整行

Vim 有匹配项时高亮显示整行,vim,line,match,highlight,Vim,Line,Match,Highlight,是否有人知道如何突出显示整行,如果有或如果有匹配后进行搜索 p、 e.我搜索/user 现在,如果有匹配项,我想突出显示整行 编辑 我想在搜索突出显示中使用突出显示。 我不想使用突出显示组 我不知道你是否可以接受: 首先,您需要定义突出显示的组:例如用户行 :highlight userline ctermbg=darkred guibg=darkred 然后你可以: :match userline /.*user.*/ 所有包含“用户”的行都将突出显示。突出显示行的另一种方法可能是使用qu

是否有人知道如何突出显示整行,如果有或如果有匹配后进行搜索

p、 e.我搜索/user

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

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

我不想使用突出显示组

我不知道你是否可以接受:

首先,您需要定义突出显示的
:例如
用户行

: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\).*'