Konfigurowanie wielu reguł podświetlania w vimie

16

Próbuję skonfigurować reguły, aby wyróżnić zarówno końcowe białe znaki, jak i linie o określonej długości, dodając to do mojego .vimrc:

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

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

Wydaje się jednak, że odbiera to, co jest ostatnie. Nie mogę znaleźć sposobu, aby sprawić, by oboje pracowali jednocześnie.

ICR
źródło

Odpowiedzi:

9

Jednokierunkowa:

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

Inne:

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.\+/

Dostępne są również: 3match. Jednocześnie mogą być aktywne maksymalnie trzy mecze. Lub możesz użyć matchadd()do tworzenia dopasowań bez ograniczenia ilości.

Uwaga: 3match jest używany przez matchparen, więc będzie konfliktować, jeśli go użyjesz.

Wstrzymano do odwołania.
źródło
7

Użyj matchadd(), więc dodaj to do .vimrc:

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

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

Aby wyświetlić wszystkie dopasowania:

:echo getmatches()

Aby usunąć dopasowania, użyj matchdelete().

James Haigh
źródło
1

Co z użyciem tego

: 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.\+/

Możesz dopasować wiele wzorów za pomocą tego ...

imbichie
źródło