Configurando várias regras de destaque no vim

16

Eu estou tentando configurar regras para destacar os espaços em branco e as linhas finais com um determinado comprimento adicionando isso ao meu .vimrc:

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

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

No entanto, parece apenas pegar o que for último. Não consigo encontrar uma maneira de fazê-los trabalhar simultaneamente.

ICR
fonte

Respostas:

9

Mão única:

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

Outro:

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

Também disponível: 3match. Até três partidas podem estar ativas por vez. Ou você pode usar matchadd()para criar correspondências sem limite para a quantidade.

Nota: 3match é usado pelo matchparen, portanto entrará em conflito se você o usar.

Pausado até novo aviso.
fonte
7

Use matchadd(), então adicione isso ao seu .vimrc:

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

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

Para ver todas as correspondências:

:echo getmatches()

Para remover correspondências, use matchdelete().

James Haigh
fonte
1

Que tal usar isso

: sy [ntax] corresponde a {nome do grupo} [{options}] [excludenl] {pattern} [{options}]

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

Você pode combinar muitos padrões usando este ...

imbichie
fonte