在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.diff
或color.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 diff
和git 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
。