web-dev-qa-db-fra.com

Est-il possible de mettre en évidence plusieurs recherches dans (g) Vim?

Je souhaite rechercher plusieurs chaînes dans Vim/gVim et les mettre en surbrillance dans différentes couleurs. Y a-t-il un moyen de faire cela avec Vim prêt à l'emploi ou avec un plug-in?

54
feihtthief

Essayez " Mettez en surbrillance plusieurs mots ", qui utilise matchadd().

18
George V. Reilly

Il existe deux méthodes simples pour mettre en surbrillance plusieurs mots dans l’éditeur vim. 

  1. Allez en mode de recherche, tapez '/' puis tapez\v suivi des mots que vous souhaitez rechercher séparés par ' | '(pipe).
    Ex:/\ vword1 | Word2 | Word3  
  2. Allez en mode de recherche et tapez les mots que vous voulez rechercher séparés par '\| '.
    Ex:/Word1\| Word2\| Word3  

Fondamentalement, la première méthode vous place en mode d'expression régulière, de sorte que vous n'avez pas besoin de mettre de barres obliques supplémentaires avant chaque canal ou tout autre délimiteur utilisé pour la recherche.

47
Raviteja

Cela peut être fait manuellement, sans script, pour deux modèles de recherche.

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

Rechercher est le nom du groupe de surbrillance, utilisez cette option pour sélectionner un autre groupe à surligner avec une couleur différente.

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

Ceci est pratique lorsque vous ne pouvez pas utiliser votre propre configuration vim. 

:match none      # clear the match pattern to stop highlighting
41
philant

Pour rechercher plusieurs chaînes dans vim, vous pouvez procéder comme suit:

/search1\|search2

Cela fonctionne et mettra en surbrillance à la fois search1 et search2, mais avec la même couleur . Vous devez le faire dans l’éditeur vim.

24
Naren

Oui, vous pouvez utiliser matchadd() .

Pour ajouter une surbrillance, par exemple. pour les espaces de fin:

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

Pour voir tous les matchs:

:echo getmatches()

Pour supprimer des allumettes, utilisez matchdelete() . Par exemple.:

:call matchdelete(7)
5
James Haigh

MultipleSearch: surligne plusieurs recherches en même temps, chacune avec une couleur différente. 

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.
4
Naga Kiran
:%s /red\|green\|blue/

Cependant, je ne suis pas sûr de savoir comment garder différentes couleurs pour différents mots clés. Merci. 

1
Pri Bhi

Mon Mark plugin peut mettre en évidence simultanément plusieurs mots de différentes couleurs, comme la recherche intégrée. Il est livré avec de nombreux mappages et commandes, permet de conserver les modèles et supporte plusieurs palettes de couleurs.

0
Ingo Karkat

MultipleSearch2 est un autre script intégré à la recherche de vim: http://www.vim.org/scripts/script.php?script_id=1183

0
user12371