在git-diff的输出中着色空白区域

关于代码格式,我是纯粹的:)。 我经常删除不必要的空白(行尾只有ws,ws等)。 我甚至设置了vim来显示那种颜色为红色的线条。

我的问题是,使用git-diff我经常看到这样的东西:

- else{ + else{ 

即使我有git diff颜色我看不出差异(在特定的情况下,我删除了1 ws在行的末尾)。 有什么办法告诉git-diff来显示ws颜色为红色? (例如与/ \ s + $ / regexp匹配的那些)。

您可能需要设置color.diff.whitespaceconfiguration设置,例如:

  git config color.diff.whitespace "red reverse" 

(我假设你已经有color.diffcolor.ui设置为auto因为你说你看到git diff彩色补丁。)

如果您想微调以红色突出显示的空格错误的types,则可以更改core.whitespace ,但默认情况下会启用blank-at-eol ,因此您可能不需要更改您提到的示例。

一个可能的混淆之处是在git diff的输出中,空白错误只会在引入的行中突出显示,而不会被删除。 ( 更新:正如Paul Whittaker 在他的答案中指出的,你应该投票:)你可以通过用git diff -R来颠倒diff的意义来看这些。)

你可以在git config手册页find关于这些configuration选项的更多文档

如果您不想使用-R kludge,则可以使用diff man页面中的WhiteSpace Error Highlight选项。

–ws误差高亮=

突出显示由color.diff.whitespace指定的颜色指定的行上的空白错误。 是旧的,新的,上下文的逗号分隔列表。 当没有给出这个选项时,只会突出显示新行中的空格错误。 例如–ws-error-highlight = new,旧的高亮显示删除和添加行上的空格错误。 所有这些都可以作为旧的,新的,上下文的短手。

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

要么

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

我不知道有一种方法可以永久地打开这个文件,并将其保存在configuration文件中,而不必使用别名:

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

现在你可以使用:

git df <file>

查看红色的变化。

请注意, 使用Git 2.11(2016年第四季度) ,此别名可能会replace为:

 git config diff.wsErrorHighlight all 

请参阅关于git diffgit config 文档 。

使用git diff -R将删除的行变成添加的行。 然后将会突出显示尾随的空格。

(假设你已经启用了空白hightlighting,根据Mark的答案中的颜色设置。这个方法的信用转到Junio的posthttp://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal- with-git-diff-td5653205.html 。)

例如,将文件从DOS行结尾转换为Unix时, git diff -R清楚地显示了出现在行结尾的^M字符(dis)。 没有-R (也没有-w等),它表明整个文件已经改变,但没有显示如何。

使用git diff --color | less -R git diff --color | less -R-R使颜色控制代码人性化。

那么你可以使用less的正则expression式search,例如

 /[[:space:]]+$ 

我的版本的git diff似乎已经做到了这一点 – 我有git 1.7.4.1并且设置了color.ui = auto