Gibt es eine Möglichkeit, mehrere Suchvorgänge in (g) Vim hervorzuheben?


75

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

Antworten:



93

Es gibt zwei einfache Möglichkeiten, mehrere Wörter im vim-Editor hervorzuheben.

  1. Wechseln Sie in den Suchmodus, dh geben Sie ' / ' ein, und geben Sie dann \ v gefolgt von den Wörtern ein, die Sie suchen möchten, getrennt durch ' | '(Rohr).
    Z.B:/\vword1|word2|word3

  2. Wechseln Sie in den Suchmodus und geben Sie die zu suchenden Wörter getrennt durch ' \ | ein '.
    Z.B:/word1\|word2\|word3

Grundsätzlich versetzt Sie der erste Weg in den Modus für reguläre Ausdrücke, sodass Sie vor jeder Pipe oder anderen Trennzeichen, die für die Suche verwendet werden, keine zusätzlichen Schrägstriche einfügen müssen.


Dies ist besonders nützlich, da Sie immer noch 'n' (oder 'N') verwenden können, um zum nächsten (oder vorherigen) Ergebnis zu gelangen.
mgarey

2
@ DaveDopson "Nachteil" Kennen Sie einen Weg, um mehrere Farben zu erhalten?
Begrenzte Versöhnung

45

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 Hervorhebungsgruppe. 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 keine eigene vim-Konfiguration verwenden können.

:match none      # clear the match pattern to stop highlighting

4
Hat bei mir nicht funktioniert. Für alle, die sich fragen, versuchen Sie dies: stackoverflow.com/questions/4162664/…
Eric Chen

32

Für die Suche nach mehreren Zeichenfolgen in vim haben Sie folgende Möglichkeiten:

/search1\|search2

Dies funktioniert und hebt beide search1und hervor search2, jedoch mit derselben Farbe. Sie müssen dies im vim-Editor tun.


Was ist, wenn Sie nach Suche1 suchen möchten, aber nicht mit Suche2 übereinstimmen? Wie kann ich diese Befehlszeile in vim ändern?
Medev21

5

Ja, sofort einsatzbereit matchadd().

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

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

So zeigen Sie alle Übereinstimmungen an:

:echo getmatches()

Um Übereinstimmungen zu entfernen, verwenden Sie matchdelete(). Z.B.:

:call matchdelete(7)

4

MultipleSearch : Markieren Sie mehrere Suchvorgänge 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.

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

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


1

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


Hat es eine Github-Seite mit Richtlinienbeschreibung? Es ist nicht einfach, auf vim.org zu lesen. Auch nicht einfach, Probleme zu melden.
Ertuğrul Altınboğa

Wie kann ich dieses Plugin von Vundle installieren? Weil der Code in Github Vim-Skripten zu alt ist.
Ertuğrul Altınboğa

@LiMingHung Diese Version von vim-scripts wird funktionieren, aber ja, sie ist veraltet. Sie könnten die Jungs von vim-scripts bitten, es zu aktualisieren; Sie haben einige nervige Probleme mit ihrem Schaber.
Ingo Karkat

1
Ist es möglich, dein Plugin auf Github zu setzen? Es kann direkt von Vundle installiert werden. Muss sich nicht auf vim-Skripte verlassen.
Ertuğrul Altınboğa

@ ErtuğrulAltınboğa: Mark.vim ist jetzt auf GitHub !
Ingo Karkat


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.