git colors diff whitespace

Colorear el espacio en blanco en la salida de git-diff



colors whitespace (4)

En cuanto al formato de código, soy un poco purista :). A menudo elimino los espacios en blanco innecesarios (líneas con solo ws, ws al final de las líneas, etc.). Incluso he establecido vim para mostrar ese tipo de líneas de color a rojo.

Mi problema es que al usar git-diff a menudo veo algo como esto:

- else{ + else{

Incluso si tengo un color git-diff, no puedo ver la diferencia (en esa situación particular eliminé 1 ws al final de la línea). ¿Hay alguna forma de decirle a git-diff que muestre que ws está teñido de rojo? (por ejemplo, los que coinciden con / / s + $ / regexp).


Es posible que deba establecer la configuración de configuración color.diff.whitespace, por ejemplo, con:

git config color.diff.whitespace "red reverse"

(Supongo que ya tienes color.diff o color.ui establecido en auto ya que, de todos modos, dices que ves parches de color de git diff ).

Si desea ajustar el tipo de errores de espacio en blanco que se resaltan en rojo, puede cambiar core.whitespace , pero core.whitespace blank-at-eol está habilitado de manera predeterminada, por lo que probablemente no necesite cambiar eso para el ejemplo que menciona. .

Una posible fuente de confusión es que en la salida de git diff , los errores de espacio en blanco solo se resaltan en las líneas que se introducen, no en aquellas que se eliminan. ( Actualización: como señala Paul Whittaker en su respuesta , que debería votar arriba :), puede ver estos invirtiendo el sentido de la diferencia con git diff -R ).

Puede encontrar más documentación sobre estas opciones de configuración en la página man de git config

Si no desea utilizar el -R kludge, puede usar la opción Resaltar error WhiteSpace de la página de manual .

--ws-error-highlight =

Resalte los errores de espacio en blanco en las líneas especificadas por en el color especificado por color.diff.whitespace. es una lista separada por comas del contexto antiguo, nuevo. Cuando no se proporciona esta opción, solo se resaltan los errores de espacio en blanco en las nuevas líneas. Eg --ws-error-highlight = new, old resalta los errores de espacio en blanco en las líneas eliminadas y agregadas. todo se puede usar como una abreviatura para el contexto viejo, nuevo.

git diff --ws-error-highlight=new,old <file>

o

git diff --ws-error-highlight=all <file>

No sé de una manera de activar esto de forma permanente y almacenar esto en la configuración, aparte de usar un alias:

git config alias.df ''diff --ws-error-highlight=all''

Ahora puedes usar:

git df <file>

Para ver los cambios en rojo.

Tenga en cuenta que con Git 2.11 (Q4 2016) , este alias podría reemplazarse por:

git config diff.wsErrorHighlight all

Ver doc en git diff y en git config .


Mi versión de git diff ya parece hacer esto: tengo git 1.7.4.1 y he configurado color.ui = auto .


Usa git diff --color | less -R git diff --color | less -R . El -R hace que los códigos de control de color sean amigables para los humanos.

Entonces puede usar la búsqueda de expresión regular de less , por ejemplo

/[[:space:]]+$


Use git diff -R para convertir las líneas eliminadas en líneas agregadas. Luego se resaltarán los espacios en blanco al final.

(Esto supone que ya tiene activado Hightlighting de espacio en blanco, según la configuración de color de la respuesta de Mark. El crédito para este método se aplica a la publicación de Junio ​​en http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal-with-git-diff-td5653205.html .)

Por ejemplo, al convertir un archivo de terminaciones de línea de DOS a Unix, git diff -R me muestra claramente los ^M caracteres (dis) que aparecen al final de las líneas. Sin -R (y también sin -w etc.) muestra que el archivo completo ha cambiado, pero no muestra cómo.