有什么办法可以突出显示(g)Vim中的多个搜索?


77

我想在Vim / gVim中搜索多个字符串,并用不同的颜色突出显示它们。是否可以通过现成的Vim或插件来执行此操作?

Answers:



94

有两种简单的方法可以在vim编辑器中突出显示多个单词。

  1. 进入搜索模式,即键入' / ',然后键入\ v,然后键入要搜索的单词,并用' |分隔'(烟斗)。
    例如:/\vword1|word2|word3

  2. 进入搜索模式,然后键入要搜索的单词,并用' \ |分隔 '。
    例如:/word1\|word2\|word3

基本上,第一种方法使您进入正则表达式模式,从而无需在用于搜索的每个管道或其他定界符之前放置任何额外的反斜杠。


这特别有用,因为您仍然可以使用“ n”(或“ N”)转到下一个(或上一个)结果。
mgarey

2
@DaveDopson“缺点”您知道一种获取多种颜色的方法吗?
lmat-恢复莫妮卡

45

对于两个搜索模式,这可以手动完成而无需任何脚本。

:match Search /pattern/
:match Search /<CTRL-R>/   # highlight the current search pattern

搜索是突出显示组的名称,请使用补全选择另一组以不同颜色突出显示。

 :match <TAB>
 :match <TAB>    # completion will list all highlight group

当您不能使用自己的vim配置时,这非常方便。

:match none      # clear the match pattern to stop highlighting

4
没有为我工作。对于任何想试试这个:stackoverflow.com/questions/4162664/...
陈冠宇

32

要在vim中搜索多个字符串,您可以执行以下操作:

/search1\|search2

这可以正常工作,并且会同时突出显示search1和和search2,但是颜色相同。您必须在vim编辑器中执行此操作。


如果要查找search1但不匹配search2怎么办,如何在vim中修改该命令行?
medev21

5

是的,您可以直接使用matchadd()

添加亮点,例如 对于尾随空格:

:highlight ExtraWhitespace ctermbg=grey guibg=grey
:call matchadd('ExtraWhitespace', '\s\+$', 11)

要查看所有匹配项:

:echo getmatches()

要删除匹配项,请使用matchdelete()。例如。:

:call matchdelete(7)


3
:%s /red\|green\|blue/

我不确定如何为不同的关键字保留不同的颜色。谢谢。


1

我的Mark插件可以同时突出显示不同颜色的多个单词,例如内置搜索。它带有许多映射和命令,可以持久保留图案,并支持多种调色板。


是否有带有指导说明的github页面?在vim.org上阅读并不容易。报告问题也不容易。
2015年

如何通过Vundle安装此插件?因为github vim-scripts中的代码太旧了。
2015年

@LiMingHung vim-scripts的那个版本可以使用,但是可以,它已经过时了。您可以要求vim-scripts的人员进行更新。他们的刮板有一些烦人的问题。
Ingo Karkat 2015年

1
有可能将您的插件放在github上吗?它可以直接由Vundle安装。不必依赖vim脚本。
Ertugrul的Altınboğa

@ErtuğrulAltınboğa:Mark.vim现在在GitHub上
Ingo Karkat


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.