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

10

109

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?

Oxy answered 1/4, 2009 at 7:40 Comment(0)
C
146

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.

Carlos answered 5/3, 2015 at 10:29 Comment(2)
This is especially useful since you can still use 'n' (or 'N') to go to the next (or previous) result.Barber
@DaveDopson "downside" Do you know of a way to get multiple colors?Terminus
D
49

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
Debouch answered 30/7, 2010 at 6:56 Comment(1)
Did not work for me. For anyone wondering try this: #4163164Schwinn
J
45

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.

Judicial answered 4/12, 2014 at 22:15 Comment(1)
what if you want to look for search1 but not matching search2, how can I modify that command line in vim?Live
G
21

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

Graupel answered 1/4, 2009 at 7:44 Comment(1)
This one is the coolest, just hit \+m (or double click) on each word you want to (un)highlight. And you get a different color each time.Woden
F
9

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)
Fiorin answered 15/12, 2012 at 4:23 Comment(0)
P
5

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.
Perdition answered 1/7, 2009 at 19:32 Comment(0)
I
5
:%s /red\|green\|blue/

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

Insoluble answered 6/7, 2018 at 22:11 Comment(0)
L
3

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.

Leakey answered 28/3, 2014 at 14:40 Comment(7)
Does it have github page with guideline description? It is not easy to read on vim.org. Also not easy to report issues.Footsore
How can I install this plugin by Vundle? Becasue the code in github vim-scripts is too old.Footsore
@LiMingHung That version from vim-scripts will work, but yes, it is outdated. You could ask the guys from vim-scripts to update it; they have some annoying issues with their scraper.Leakey
Is it possible put your plugin on github? It can install by Vundle directly. Doesn't have to rely on vim-scripts.Footsore
@ErtuğrulAltınboğa: Mark.vim is now on GitHub!Leakey
It works very well but I don't like the need to install another plugin as an 'external library'.Apollinaire
@Mauro: What's the difference between installing one or two plugins?! The ingo-library stuff is all loaded on demand only; you'll appreciate the effort I've put into separating generic functionality once you use several of my plugins...Leakey
N
1

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

Nemertean answered 3/5, 2009 at 13:57 Comment(0)
C
1

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

Conjunctive answered 19/4, 2014 at 2:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.