有没有办法在(g)Vim中突出显示多个搜索?

时间:2009-04-01 07:40:11

标签: vim highlighting

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

10 个答案:

答案 0 :(得分:52)

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

  1. 进入搜索模式,即输入' / '然后键入 \ v ,然后键入要搜索的单词,用 | '分隔。 (配管)。
    例如: / \ vword1 | word2 | word3
  2. 转到搜索模式,然后按' \ | '键入要搜索的字词。 例如: / word1 \ | word2 \ | word3
  3. 基本上,第一种方法是让你进入正则表达式模式,这样你就不需要在用于搜索的每个管道或其他分隔符之前添加任何额外的反斜杠。

答案 1 :(得分:41)

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

: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

答案 2 :(得分:27)

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

/search1\|search2

这是有效的,并会突出显示search1search2,但颜色相同。 你必须在vim编辑器中这样做。

答案 3 :(得分:18)

尝试使用matchadd()的“Highlight multiple words”。

答案 4 :(得分:5)

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

添加突出显示,例如。用于尾随空格:

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

查看所有匹配项:

:echo getmatches()

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

:call matchdelete(7)

答案 5 :(得分: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.

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

我的Mark plugin可以同时突出显示不同颜色的多个单词,例如内置搜索。它带有许多映射和命令,允许持久化模式,并支持多个调色板。

答案 9 :(得分:-1)

我更喜欢高亮插件,简单而且足够,可以自动突出显示不同颜色的不同单词。

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