Ein Befehl zum Hervorheben setzt zuvor deklarierte Hervorhebungen zurück

7

Ich versuche, die Hervorhebung in meinem vim zu optimieren, und ich versuche, einige Syntaxgruppen über den matchBefehl festzulegen und sie in meiner vimrcDatei hervorzuheben , da diese Gruppen generisch sind und nicht zu einer bestimmten Sprachsyntaxdatei gehören.

Mein Ansatz funktioniert jedoch nur für eine einzelne Hervorhebung. Sobald ich eine weitere Instanz eines highlight/matchPaares hinzufüge, funktionieren die zuvor deklarierten nicht, nur die letzte funktioniert, bis ich eine weitere hinzufüge highlight/match.

Dies ist der Code (der relevante Teil) meines vimrc. Dieses Beispiel funktioniert:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/

Und das nicht (nur das letzte Paar hi/match):

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
match WhiteSpaceChar / /

Kann mir jemand dabei helfen, wie es funktioniert?

user907860
quelle

Antworten:

8

Von :help :match

Das Hervorheben von Übereinstimmungen mit: match ist auf drei
Übereinstimmungen beschränkt (abgesehen von: match ,: 2match und: 3match sind
verfügbar). matchadd () hat diese Einschränkung nicht und
ermöglicht außerdem die Priorisierung von Übereinstimmungen.

So können Sie verwenden:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
2match WhiteSpaceChar / /

Oder:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
call matchadd("WhiteSpaceChar", " ")

matchadd()Ermöglicht außerdem weitere Flexibilität, z. B. das Löschen oder Priorisieren von Übereinstimmungen. Siehe :help matchadd()für weitere Details.

Alternativ können Sie die Syntaxhervorhebung untersuchen: :help syntax

Reich
quelle
3

Was ist mit der

: sy [ntax] match {Gruppenname} [{Optionen}] [excludenl] {Muster} [{Optionen}]

:hi NewLineWin ctermfg=248 guifg=#999999
:syntax match NewLineWin /\r\n/
:hi WhiteSpaceChar ctermfg=252 guifg=#999999
:syntax match WhiteSpaceChar / /

Sie können eine beliebige Anzahl solcher Übereinstimmungen verwenden ...

imbichie
quelle