Me gustaría tener una agradable y dulce exhibición de espacios en blanco al final de mi terminal vim. Esto me permitiría eliminarlos antes de cerrar el archivo.
Soy consciente de que esta pregunta es bastante popular y ya encontré docenas de respuestas en SO. Lamentablemente no encontré uno satisfactorio todavía ...
Por lo tanto, intentaré resumir la información recopilada y las soluciones que encontré.
Solución 1: resaltar manualmente los espacios finales
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

Pros:
- Fácil de usar
- Rápido
- Compatible con
cursorline
Contras:
- El color elegido no es compatible con otros esquemas de color porque el color se configura manualmente en
red - Los grandes bloques de fondo rojo no son muy estéticos.
Solución 2: uso de la función de lista
set list
set listchars+=trail:◦

Pros:
- Fácil de usar
- Rápido
Contras:
- Problema si está
:set cursorlinehabilitado - El color dedicado para
list/trailno es configurable. Tiene que ser igual a los otros listchars
Solución 3: uso de la función de ocultación
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red

Pros:
- Más bonita que la primera solución.
Contras:
- El fondo no es lo mismo que el fondo de la línea del cursor
- Puede interferir con otras reglas de ocultación
- El color elegido no siempre es compatible con el esquema de color.
- No es compatible con la versión anterior de Vim
Mi pregunta
¿Cuál de las soluciones enumeradas es la más adecuada en términos de rendimiento y compatibilidad y cómo puedo obtener todas las ventajas y desventajas?
En otros términos, me gustaría encontrar una solución donde:
- El color final resaltado concuerda con el esquema de colores elegido.
- Este color es claramente visible pero no demasiado agresivo para los ojos.
- Compatible con
cursorline(fondo y primer plano) `- Compatible con otros complementos que pueden usar ocultar
- El carácter final se puede establecer en cualquier carácter Unicode
:hi link ExtraWhitespace CursorLine. Ver:help hi-link.