Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git diff'中着色空白;s输出_Git_Colors_Diff_Whitespace - Fatal编程技术网

在git diff'中着色空白;s输出

在git diff'中着色空白;s输出,git,colors,diff,whitespace,Git,Colors,Diff,Whitespace,关于代码格式,我有点纯粹:)。我经常删除不必要的空白(只有ws的行,在行尾的ws等)。我甚至设置了vim来显示这种颜色为红色的线条 我的问题是,使用git diff时,我经常会看到这样的情况: - else{ + else{ 即使我有git diff颜色,我也看不出有什么不同(在那个特定的情况下,我在行尾删除了1个ws)。有没有办法告诉git diff将ws着色为红色?(例如那些与/\s+$/regexp匹配的)。我的git diff版本似乎已经做到了这一点-我有git

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

我的问题是,使用git diff时,我经常会看到这样的情况:

-      else{ 
+      else{

即使我有git diff颜色,我也看不出有什么不同(在那个特定的情况下,我在行尾删除了1个ws)。有没有办法告诉git diff将ws着色为红色?(例如那些与/\s+$/regexp匹配的)。

我的
git diff
版本似乎已经做到了这一点-我有git 1.7.4.1,并且设置了
color.ui=auto
您可能需要设置color.diff.whitespace配置设置,例如:

 git config color.diff.whitespace "red reverse"
(我假设您已经将
color.diff
color.ui
设置为
auto
,因为您说您可以从
git diff
中看到彩色补丁。)

如果要微调以红色突出显示的空白错误类型,则可以更改
核心。空白
,但默认情况下启用了下线处的
空白
,因此您可能不需要更改您提到的示例


一个可能的混淆源是,在
git diff
的输出中,空白错误只在引入的行中突出显示,而不是在删除的行中突出显示。(更新:正如Paul Whittaker指出的,你应该投票:),你可以通过使用
git diff-R
来逆转差异的含义来看到这些)

您可以在中找到有关这些配置选项的更多文档

如果不想使用
-R
kludge,可以从中使用空白错误突出显示选项

--ws错误突出显示=

以color.diff.whitespace指定的颜色突出显示指定行上的空白错误。 是一个逗号 旧、新、上下文的分隔列表。如果未给出此选项, 仅高亮显示新行中的空白错误。例如。 --ws-error highlight=new,old突出显示删除行和添加行上的空白错误。所有这些都可以用作 旧的,新的,背景

git diff--ws error highlight=new,old

git diff--ws error highlight=all

除了使用别名之外,我不知道有什么方法可以永久打开此选项并将其存储在配置中:

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

现在您可以使用:

git-df

以红色显示更改

请注意,此别名可能替换为:

git config diff.wsErrorHighlight all

请参阅和。

使用
git diff-R
将删除的行转换为添加的行。然后将突出显示尾随空白

(根据Mark回答中的颜色设置,这假设您已经启用了空白高亮显示。此方法的功劳归于Junio的帖子,网址为。)

例如,当将文件从DOS行尾转换为Unix时,
git diff-R
会清楚地显示行尾出现的
^M
字符(dis)。如果没有
-R
(也没有
-w
等),则显示整个文件已更改,但不显示如何更改。

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

然后可以使用
less
的正则表达式搜索,例如

/[[:space:]]+$

对于懒惰的答案略读者,只需运行:

git config --global diff.wsErrorHighlight all

然后,
git diff
也将突出显示删除行中的尾随空格。

“一个可能的混淆源是,在git diff的输出中,空格错误仅在引入的行中突出显示,而不是在删除的行中突出显示。”没错!对于删除的行,也没有办法显示它?(嘿,它是diff:))添加--global以在~/中设置。gitconfig@radarek:您可以使用反向选项:
git diff-R
是否有此错误报告?如果没有,则似乎应该有。这起作用了
git config diff.wserror突出显示所有
。使用
git config--global[…]
将更改设置为全局(即影响所有回购)。我刚刚用git 1.7.5.1进行了测试,它肯定不会突出显示要删除的行中的尾随空格。当然,如果您感到绝望,也可以执行
git diff | cat-A | less-S
,但除了回车之外,
cat
也会显示任何颜色,突出显示转义码。@Paul_Whittaker
cat-A
不可携带。在BSD cat上,没有此类选项。请改用
cat-vet
。顺便说一句,这个正则表达式也适用于
vim
less-R
的最后一个想法只是让我更容易通过
less
传递
ls--color
。如果你反转颜色(交换前景和背景),就会出现这样的空白变化。在许多终端中实现这一点的一个简单方法是用鼠标突出显示有问题的文本。当然,这个技巧只适用于彩色差异。