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?

Feihtthief
quelle

Antworten:

19

Versuchen Sie „ Markieren Sie mehrere Wörter “, die Anwendungen matchadd().

George V. Reilly
quelle
Dies ist das coolste, drücken Sie einfach \+m(oder doppelklicken Sie) auf jedes Wort, das Sie (un) hervorheben möchten. Und Sie erhalten jedes Mal eine andere Farbe.
KcFnMi
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.

Raviteja
quelle
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
Philant
quelle
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.

Naren
quelle
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)
James Haigh
quelle
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.
Naga Kiran
quelle
3
:%s /red\|green\|blue/

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

Pri Bhi
quelle
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.

Ingo Karkat
quelle
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