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.

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.


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().


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 ...

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.