92

我想在 Vim/gVim 中搜索多个字符串,并用不同的颜色突出显示它们。有没有办法用开箱即用的 Vim 或插件来做到这一点?

4

10 回答 10

114

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

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

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

基本上,第一种方法将您置于正则表达式模式,这样您就不需要在用于搜索的每个管道或其他分隔符之前放置任何额外的反斜杠。

于 2015-03-05T10:29:37.713 回答
46

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

: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
于 2010-07-30T06:56:11.670 回答
36

要在 vim 中搜索多个字符串,您可以这样做:

/search1\|search2

这有效,并将突出显示search1search2,但颜色相同。您必须在 vim 编辑器中执行此操作。

于 2014-12-04T22:15:55.280 回答
20

尝试“突出显示多个单词”,它使用matchadd().

于 2009-04-01T07:44:24.320 回答
5

是的,您可以开箱即用地使用matchadd().

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

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

查看所有比赛:

:echo getmatches()

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

:call matchdelete(7)
于 2012-12-15T04:23:56.810 回答
4

MultipleSearch:同时突出显示多个搜索,每个搜索具有不同的颜色。

http://www.vim.org/scripts/script.php?script_id=479

:Search <pattern1> //will highlight all occurences of <pattern1> in the current buffer.
A subsequent :Search <pattern2> will highlight all occurences of <pattern2> in the current buffer.
于 2009-07-01T19:32:33.133 回答
3
:%s /red\|green\|blue/

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

于 2018-07-06T22:11:32.717 回答
2

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

于 2014-03-28T14:40:56.267 回答
0

MultipleSearch2 是另一个与 vim 的搜索集成的脚本:http: //www.vim.org/scripts/script.php? script_id=1183

于 2009-05-03T13:57:04.937 回答
0

我更喜欢高亮插件,简单又够用,可以自动用不同的颜色高亮不同的单词。

http://www.vim.org/scripts/script.php?script_id=1599

于 2014-04-19T02:53:07.227 回答