2011-09-08 12 views
7

Encontré el siguiente código que resaltará todos los espacios en blanco innecesarios, pero realmente quiero que también resalte todas las pestañas en mi código. Jugué con muchas variaciones que no funcionaron pero no pude encontrar una expresión regular que hiciera ambas cosas. ¿Algunas ideas?¿Cómo podría destacar vim el espacio en blanco redundante y todas las pestañas?

highlight RedundantWhitespace ctermbg=red guibg=red 
match RedundantWhitespace /\s\+$\| \+\ze\t/ 

Editar: la adición de muestras de solicitud:

Bueno por lo que en las muestras de abajo estoy usando \ t ficha y representar% para representar un espacios en blanco finales que quiero vim para resaltar en rojo.

/tOh hi here is some text%%%% 
/t/tHere is some indented text%%% 

Así en la primera línea Hay 1 ficha que deben tener sus espacios de relieve en los espacios de color rojo y 4 se arrastran haber resaltados en rojo. En la segunda línea hay 2 pestañas y 3 espacios en blanco al final que se han resaltado en rojo.

+0

Si puede dar algunas muestras y contra muestras que harán que sea más fácil hacer coincidir dichas muestras con una expresión regular. Desarrollo basado en pruebas;) –

+0

Después de luchar con esto, tengo que mencionar que esto tiene que ser en .gvimrc, no .vimrc! – philant

Respuesta

4

Desde su comentario en otra respuesta:

No estoy en busca de ella para resaltar cada ficha y todos los espacios finales. Realmente busco identificar todas las pestañas

¿Hace esto lo que quiere?

match RedundantWhitespace /\s\+$\|\t/ 

En términos humanos, esto es:

Elegir cualquier espacios al final de una línea, o cualquier pestaña en cualquier lugar

Parece que seleccionar el espacio en blanco en sus ejemplos .

+0

Literalmente me di cuenta de esto y vine a responder mi propia pregunta. Eso lo hace perfectamente. Estaba acostumbrado a regex usando | por o eso pensé \ | estaba escapándose pero no fue así. Eso fue en realidad todavía un o. De todos modos, voté a favor de todos los que enviaron una respuesta y agradezco la ayuda de todos. Esto era lo que necesitaba sin embargo. Gracias –

+0

@John: Sí. Como dijiste, '\ |' es para el "o" en VIM. '|' no es - es el personaje literal. Escriba ': help regex' y es lo primero que aparece :) Esto también podría ayudar: http://vimdoc.sourceforge.net/htmldoc/usr_27.html –

+1

En lugar de usar el caracter' \ | ', encontraría más claro tener dos declaraciones de coincidencia separadas, una para los espacios en blanco al final y una para las pestañas. Esto lo hace más transparente y fácil de mantener. Pero esa es solo mi preferencia personal. –

8

Recomendaría usar listchars en lugar de subrayar la sintaxis. Esto funcionaría en todos los ámbitos para todos los tipos de archivos. Puede utilizar listchars para espacios finales también, y meterse con los colores, así:

set listchars=tab:»·,trail:· 
set list 
hi SpecialKey ctermbg=red ctermfg=red guibg=red guifg=red 

Tenga en cuenta que los colores de fondo y primer plano son los mismos aquí, así que terminar de ver "bloques" de color rojo para servicios móviles y filas, .

+0

Ahh eso es un fastidio. Realmente solo quiero que los personajes se resalten en rojo y eso es todo. Esto agrega un montón de símbolos –

+0

Mejor pregunta: ¿Hay alguna forma de hacer que este sea un color sólido para que no pueda ver nada más que el rojo? Lo que significa que no hay color de primer plano? –

+0

Establecer los colores de fondo y de fondo de la misma? Actualicé el ejemplo anterior para hacer esto.Los personajes siguen ahí, pero solo aparecen como bloques rojos a menos que coloques un cursor sobre ellos. – overthink

1

creo que desea utilizar \zs (para "iniciar") en lugar de \ze (por "terminar"):

highlight RedundantWhitespace ctermbg=red guibg=red 
match RedundantWhitespace /\s\+$\| \+\zs\t/ 

Eso será todavía sólo resaltar las pestañas que están precedidos por uno o más espacios, aunque . No estoy seguro si eso es lo que quiere o no. A continuación se muestra una versión que pondrá de relieve todas las pestañas:

highlight RedundantWhitespace ctermbg=red guibg=red 
match RedundantWhitespace /\s\+$\|\t/ 
+0

No Lo estoy buscando para resaltar cada pestaña y todos los espacios finales. Realmente estoy buscando identificar todas las pestañas. –

+0

Luego solo cambie a la segunda versión que agregué arriba. . . –

+0

Su versión realmente no parece resaltar ninguna pestaña en absoluto. –

Cuestiones relacionadas