wake-up-neo.com

Gibt es eine Möglichkeit, mehrere Suchen in (g) Vim hervorzuheben?

Ich möchte in Vim/gVim nach mehreren Zeichenfolgen suchen und sie in verschiedenen Farben hervorheben. Gibt es eine Möglichkeit, dies mit Out-the-Box Vim oder einem Plug-In zu tun?

54
feihtthief

Versuchen Sie " Markieren Sie mehrere Wörter ", wobei matchadd() verwendet wird.

18

Es gibt zwei einfache Möglichkeiten, mehrere Wörter in vim editor hervorzuheben. 

  1. Gehen Sie in den Suchmodus, d. H. Geben Sie '/' ein, und geben Sie\v gefolgt von den Wörtern ein, die Sie suchen möchten, getrennt durch ' | '(Pfeife).
    Bsp:/\ vword1 | Word2 | Word3  
  2. Gehen Sie in den Suchmodus und geben Sie die Wörter ein, die Sie durchsuchen möchten, getrennt durch '\| '.
    Bsp:/Word1\| Word2\| Word3  

Grundsätzlich führt Sie der erste Weg in den Modus für reguläre Ausdrücke, so dass Sie nicht vor jeder Pipe oder anderen Trennzeichen, die für die Suche verwendet werden, zusätzliche Schrägstriche setzen müssen.

47
Raviteja

Dies kann manuell ohne Skript für zwei Suchmuster erfolgen.

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

Suchen ist der Name der Markierungsgruppe. Verwenden Sie die Vervollständigung, um eine andere Gruppe auszuwählen, die mit einer anderen Farbe hervorgehoben werden soll.

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

Dies ist praktisch, wenn Sie Ihre eigene Vim-Konfiguration nicht verwenden können. 

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

Um mehrere Strings in vim zu durchsuchen, können Sie Folgendes tun:

/search1\|search2

Dies funktioniert und hebt sowohl search1 als auch search2 hervor, aber mit derselben Farbe . Sie müssen dies im vim-Editor tun.

24
Naren

Ja, sofort können Sie matchadd() verwenden.

Um ein Highlight hinzuzufügen, z. für nachlaufende Leerzeichen:

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

Alle Treffer anzeigen:

:echo getmatches()

Zum Entfernen von Übereinstimmungen verwenden Sie matchdelete() . Z.B.:

:call matchdelete(7)
5
James Haigh

MultipleSearch: Markieren Sie mehrere Suchen gleichzeitig mit jeweils einer anderen Farbe. 

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/

Ich bin mir jedoch nicht sicher, wie ich die verschiedenen Farben für verschiedene Keywords beibehalten soll. Vielen Dank. 

1
Pri Bhi

Mein Mark-Plugin kann mehrere Wörter in verschiedenen Farben gleichzeitig hervorheben, z. B. die integrierte Suche. Es enthält viele Mappings und Befehle, erlaubt das Bestehen der Muster und unterstützt mehrere Farbpaletten.

0
Ingo Karkat

MultipleSearch2 ist ein weiteres Skript, das in vims Suche integriert ist: http://www.vim.org/scripts/script.php?script_id=1183

0
user12371