【问题标题】:setting tabwidth to 4 in git show / git diff在 git show / git diff 中将 tabwidth 设置为 4
【发布时间】:2012-05-21 19:19:42
【问题描述】:

在工作中,我们是几个开发人员,没有代码样式指南,一些开发人员使用制表符缩进,而另一些开发人员使用 4 个空格(幸运的是,没有人使用不同于 4 个空格的空格缩进)。一般来说,这不是(大)问题,因为在我们的编辑器中我们设置了tabwidth=4,并且所有缩进似乎都是正确的。

但在git diffgit show 中出现的是这样的:

diff --git a/mesclatabs.php b/mesclatabs.php
new file mode 100644
index 0000000..1986c91
--- /dev/null
+++ b/mesclatabs.php
@@ -0,0 +1,5 @@
+<?php
+function foo() {
+       echo "line with 1 tab\n";
+    echo "line with 4 spaces\n";
+}

问题是git diffgit show,其中每个选项卡显示为 8 个空格(嗯,实际上显示为一个选项卡,并且 shell(在我的情况下为 bash)将选项卡显示为 8 个空格。我假设必须有一些 bash 配置来改变这一点,但我想知道 git 是否可以选择在 diff / show 中将制表符输出为 4 个空格,因为一些开发人员使用 zsh 而不是 @987654330 @。

有什么想法吗?

【问题讨论】:

  • 在理想的世界中,开发人员都会使用空格,这样你就不会遇到这样的愚蠢问题。
  • 我完全不同意。既然可以用 8 个字符来表示,为什么还要用 4 个字符来表示?
  • 当然我不知道你的情况,但我真的会推动一些超级基本的编码指南,也许只是关于制表符/空格。没有制表符听起来是个好主意,因为那时人们也倾向于使用制表符来对齐他们的 cmets 等,这变得一团糟……在空格后插入制表符……当我去编辑时,我可以'看不到什么是标签,什么是空格(所以我总是让标签在我的编辑器中可见)。不过,我对此有点神经质,所以
  • 另外,我认为可以始终使用(仅)制表符来缩进代码,并使用空格来进行任何其他对齐,然后人们可以将制表位更改为他们想要的任何内容。不过,我无法想象人们足够一致!
  • @MatthewG 8 听起来比我的 2 大很多...谢谢你让我看到光! :D

标签: git bash tabs whitespace spaces


【解决方案1】:

我相信git config --global core.pager 'less -x1,5'

参考资料:

【讨论】:

  • less 的参数应该是 -x5,因为统一差异的 +/- 符号不会影响制表位的位置,但它们推送所有空格向右一个字符。 5 个制表位可以正确对齐所有内容。
  • @ZhengKai:就像一个数据点,我有less 别名为less -R,core.pager 定义如上,我运行git diff --color-words——一切正常,标签宽度是正确的。也许这有帮助?
  • 当我执行git add -p 时,不使用寻呼机并且选项卡以错误的方式显示。如果您也描述如何解决此问题。那么答案将是完整的
  • @IanRogers - 对于颜色转义序列,您想使用 less -R / --RAW-CONTROL-CHARS linux.die.net/man/1/less
  • 对于那些想知道的人,-x1,5 中的 1 是 diff 输出中的前导列(包含 +、- 和一个空格)。随后的选项卡然后跳转到第 5、9、13、17 列等 - 也就是 1 + 4 的倍数。因此,对于 git diff,正确的参数绝对是 -x1,5。人们在上面声称-x5 为他们工作......好吧 - 这是一个没有前导列的 5 个空格的制表符宽度,嗯。不太可能?
【解决方案2】:

由于我的颜色设置,https://stackoverflow.com/a/10584237/1850340 的答案对我不起作用,我想出了以下解决方案:

TAB=$'\t' && git config --global core.pager "sed 's/$TAB/    /g' | less" && unset TAB

这会将所有制表符替换为 4 个空格,然后再以 less 显示。 (需要 TAB 解决方法来规避 shell 反斜杠转义)

【讨论】:

  • 我不在我可以测试的东西上,但这会是 less -R 发挥作用的地方吗?允许 ANSI 颜色转义序列通过,而不是 less -r?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多