Impostazione di più regole di evidenziazione in vim


16

Sto cercando di impostare regole per evidenziare sia gli spazi bianchi finali sia le linee che superano una certa lunghezza aggiungendo questo al mio .vimrc:

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

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

Tuttavia, sembra solo raccogliere l'ultimo. Non riesco a trovare un modo per farli lavorare entrambi contemporaneamente.

Risposte:


9

Senso unico:

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

Un altro:

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

Disponibile anche: 3match. Possono essere attive fino a tre partite alla volta. Oppure puoi utilizzare matchadd()per creare corrispondenze senza limiti alla quantità.

Nota: 3match è usato da matchparen, quindi sarà in conflitto se lo usi.


7

Usa matchadd(), quindi aggiungi questo al tuo .vimrc:

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

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

Per visualizzare tutte le partite:

:echo getmatches()

Per rimuovere le partite usa matchdelete().


1

Che ne dici di usare questo

: sy [ntax] match {nome-gruppo} [{opzioni}] [exclenl] {modello} [{opzioni}]

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

Puoi abbinare molti numeri di modelli usando questo ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.