关于代码格式,我是一个纯粹主义者:)。我经常删除不必要的空白(只有 ws 的行,行尾的 ws 等)。我甚至将 vim 设置为将这种线条染成红色。
我的问题是,使用 git-diff 时,我经常看到这样的东西:
- else{ + else{
即使我有 git-diff 颜色,我也看不出区别(在这种特殊情况下,我删除了行尾的1个 ws)。有什么方法可以告诉 git-diff 显示颜色为红色?(例如那些与/s + $/regexp 匹配的)。
我的 git diff版本似乎已经做到了这一点-我已经设置了 git1.7.4.1和 color.ui = auto。
git diff
color.ui = auto
使用 Git 2.11(2016年第4季)及之后,你可以:
git config diff.wsErrorHighlight all
参见 医生在 git diff频道和 在 git config频道。
git config
对于更老的版本,您可以设置 color.diff.whitespace配置设置,例如:
color.diff.whitespace
git config color.diff.whitespace "red reverse"
(我假设你已经将 color.diff或者 color.ui设置为 auto,因为你说你无论如何都会看到来自 git diff的彩色补丁。)
color.diff
color.ui
auto
如果您想要调整用红色突出显示的空白错误的类型,那么您可以修改 core.whitespace,但是 blank-at-eol在默认情况下是启用的,因此您可能不需要为您提到的示例修改它。
core.whitespace
blank-at-eol
造成混淆的一个可能原因是,在 git diff的输出中,只在引入的行中突出显示空格错误,而不是在删除的行中突出显示空格错误。(正如 Paul Whittaker 指出的 在他的回答中,你应该投赞成票:) ,你可以通过将差异的意义与 git diff -R相反来看到这些。)
git diff -R
您可以在 Git 配置手册页中找到关于这些配置选项的更多文档
如果你不想使用 -R组件,你可以使用 Diff 手册中的 空白错误高亮选项。
-R
—— ws-error-highed = < p > 突出显示由 color. ff.whitespace 指定的颜色所指定的行上的空白错误。 是个逗号 旧的、新的、上下文的分隔列表。如果没有给出此选项, 只突出显示新行中的空格错误。 —— ws-error- 更新,在已删除和添加的行中都有新的、老的高亮显示空白。所有这些都可以用作 旧的,新的,背景
—— ws-error-highed =
git diff --ws-error-highlight=new,old <file>
或者
git diff --ws-error-highlight=all <file>
对于2.11以上的版本,除了使用别名之外,没有办法永久打开它并将其存储在配置中:
git config alias.df 'diff --ws-error-highlight=all'
现在你可以使用:
git df <file>
看到红色的变化。
使用 git diff -R将删除的行转换为添加的行。然后将突出显示尾部的空格。
(这里假设您已经启用了空格高亮显示,根据 Mark 的答案中的颜色设置。这个方法的功劳归于朱尼奥在 http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal-with-git-diff-td5653205.html的职位。)
例如,当将文件从 DOS 行结束转换到 Unix 时,git diff -R清楚地向我显示出现在行结束处的 ^M字符(dis)。如果没有 -R(也没有 -w等) ,它会显示整个文件已经更改,但是不会显示如何更改。
^M
-w
使用 git diff --color | less -R。 -R使色彩控制代码人性化。
git diff --color | less -R
然后可以使用 less的正则表达式搜索,例如。
less
/[[:space:]]+$
对于那些懒得回答问题的人来说,只要跑就行了:
git config --global diff.wsErrorHighlight all
然后,git diff也将突出显示已删除行中的尾随空白。