Is there any way to highlight multiple searches in (g)Vim?

VimHighlighting

Vim Problem Overview


I want to search for multiple strings in Vim/gVim and have them highlighted in different colours. Is there a way of doing this with out-the-box Vim or with a plug-in?

Vim Solutions


Solution 1 - Vim

There are two simple ways to highlight multiple words in vim editor.

  1. Go to search mode i.e. type '/' and then type \v followed by the words you want to search separated by '|' (pipe).
    E.g.: /\vword1|word2|word3

  2. Go to search mode and type the words you want to search separated by '|'.
    E.g.: /word1\|word2\|word3

Basically the first way puts you in the regular expression mode so that you do not need to put any extra back slashes before every pipe or other delimiters used for searching.

Solution 2 - Vim

This can be done manually, without any script, for two search patterns.

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

Search is the name of the highlight group, use the completion to select another group to highlight with a different color.

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

This an be handy when you cannot use your own vim configuration.

:match none      # clear the match pattern to stop highlighting

Solution 3 - Vim

For searching multiple strings in vim you can do like:

/search1\|search2

This works, and will highlight both search1 and search2, but with same color. You have to do this in vim editor.

Solution 4 - Vim

Try "Highlight multiple words", which uses matchadd().

Solution 5 - Vim

Yes, out-of-the-box you can use matchadd().

To add a highlight, eg. for trailing whitespace:

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

To view all matches:

:echo getmatches()

To remove matches use matchdelete(). Eg.:

:call matchdelete(7)

Solution 6 - Vim

MultipleSearch : Highlight multiple searches at the same time, each with a different color.

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.

Solution 7 - Vim

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

I am not sure about how to keep different colors for different keyword though. Thanks.

Solution 8 - Vim

My Mark plugin can highlight several words in different colors simultaneously, like the built-in search. It comes with many mappings and commands, allows to persist the patterns, and supports multiple color palettes.

Solution 9 - Vim

MultipleSearch2 is another script which is integrated with vim's search: http://www.vim.org/scripts/script.php?script_id=1183

Solution 10 - Vim

I prefer highlight plugin, simple and enough, can highlight different words with differently colors automatically.

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionfeihtthiefView Question on Stackoverflow
Solution 1 - VimRavitejaView Answer on Stackoverflow
Solution 2 - VimphilantView Answer on Stackoverflow
Solution 3 - VimNarenView Answer on Stackoverflow
Solution 4 - VimGeorge V. ReillyView Answer on Stackoverflow
Solution 5 - VimJames HaighView Answer on Stackoverflow
Solution 6 - VimNaga KiranView Answer on Stackoverflow
Solution 7 - VimPri BhiView Answer on Stackoverflow
Solution 8 - VimIngo KarkatView Answer on Stackoverflow
Solution 9 - Vimuser12371View Answer on Stackoverflow
Solution 10 - VimdiabloneoView Answer on Stackoverflow