在Vim中搜索时,突出显示每个匹配的模式

17

我已经在我的 .vimrc 文件中设置了 set incsearch,它会在按下回车键时高亮显示每个匹配模式,但是否有办法在搜索时同时高亮显示所有匹配项呢?

1个回答

37

这就是:set incsearch的作用:在输入模式时显示匹配项:

enter image description here

确保IncSearch高亮组确实具有独特的视觉特征;它可能已被清除:

:hi IncSearch

这里只突出显示下一个匹配项,以启用在:help 'incsearch'中提到的功能:

可以使用CTRL-L从当前匹配项之后添加一个字符到命令行。如果设置了'ignorecase'和'smartcase'并且命令行没有大写字母,则添加的字符会转换为小写。

可以使用CTRL-R CTRL-W添加当前匹配项末尾的单词,但不包括已经输入的字符。

如果您想突出显示所有匹配项,则必须修改Vim的源代码(并最终发布补丁),或者完全在Vimscript中重新实现搜索(使用getchar()matchad())。这两者都不是简单的任务,因此我建议坚持现状。


3
我刚刚修改了问题;我正在寻找一种在输入时突出显示页面中每个匹配项的方法。 - Jikku Jose
啊,那不是很清楚。我扩展了我的答案;不幸的是,这并不容易,而且你会失去一些不错的功能。 - Ingo Karkat
1
+1 Ingo的回答总是清晰明了且富有信息量。@JikkuJose,您可能需要重新考虑您的需求。1)当文件很大时,vim必须对整个缓冲区进行匹配并为每个类型突出显示它们,因此速度可能会变慢。2)这可能不太方便,例如当您正在输入正则表达式时。 - Kent
有没有办法在输入每个字符后触发<cr>? - Jikku Jose
2
@Kent 我怀疑它是否会像 Sublime 那样表现出色。 - Jikku Jose
1
@Kent 它可以限制自己搜索当前显示在屏幕上的缓冲区部分,并且高亮显示正则表达式当前匹配的内容会非常有用,不是吗? - 00prometheus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接