Configurar múltiples reglas de resaltado en vim

16

Estoy tratando de configurar reglas para resaltar tanto los espacios en blanco finales como las líneas que tienen más de una cierta longitud agregando esto a mi .vimrc:

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

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

Sin embargo, solo parece recoger lo que sea último. No puedo encontrar una manera de hacer que ambos trabajen simultáneamente.

ICR
fuente

Respuestas:

9

De una sola mano:

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

Otro:

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

También disponible: 3match. Hasta tres partidos pueden estar activos a la vez. O puede usar matchadd()para crear coincidencias sin límite a la cantidad.

Nota: 3match es utilizado por matchparen, por lo que entrará en conflicto si lo usa.

Pausado hasta nuevo aviso.
fuente
7

Use matchadd(), así que agregue esto a su .vimrc:

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

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

Para ver todos los partidos:

:echo getmatches()

Para eliminar coincidencias use matchdelete().

James Haigh
fuente
1

¿Qué hay de usar esto?

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

Puede hacer coincidir muchos patrones con este ...

imbichie
fuente