Einrichten mehrerer Markierungsregeln in vim

16

Ich versuche, Regeln einzurichten, um sowohl abschließende Leerzeichen als auch Zeilen hervorzuheben, die eine bestimmte Länge überschreiten, indem ich Folgendes zu meiner .vimrc hinzufüge:

highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray guibg=lightgray
match OverLength /\%>80v.\+/

Es scheint jedoch nur das aufzuheben, was das letzte ist. Ich kann keinen Weg finden, sie dazu zu bringen, beide gleichzeitig zu arbeiten.

ICR
quelle

Antworten:

9

Einweg:

highlight EWOL ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match EWOL /\%>20v.\+\|\s\+$/

Ein weiterer:

highlight ExtraWhitespace ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
2match OverLength /\%>80v.\+/

Ebenfalls erhältlich: 3match. Es können bis zu drei Übereinstimmungen gleichzeitig aktiv sein. Sie können auch verwenden matchadd(), um Übereinstimmungen ohne Mengenbeschränkung zu erstellen.

Hinweis: 3match Wird von matchparen verwendet und kann bei Verwendung zu Konflikten führen.

Bis auf weiteres angehalten.
quelle
7

Verwenden Sie matchadd(), so fügen Sie dies zu Ihrem hinzu .vimrc:

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

highlight OverLength ctermbg=lightgrey guibg=lightgrey
call matchadd('OverLength', '\%>80v.\+')

So zeigen Sie alle Übereinstimmungen an:

:echo getmatches()

Streichhölzer entfernen mit matchdelete().

James Haigh
quelle
1

Was ist damit?

: sy [ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}]

:highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
:syntax match ExtraWhitespace /\s\+$/
:highlight OverLength ctermbg=lightgray guibg=lightgray
:syntax match OverLength /\%>80v.\+/

Mit dieser Funktion können Sie eine Vielzahl von Mustern abgleichen ...

imbichie
quelle