在git show / git diff中设置标签宽度为4

fnvucqvd  于 2023-02-20  发布在  Git
关注(0)|答案(3)|浏览(168)

在工作中,我们是几个开发人员,没有代码风格指南,一些开发人员使用制表符缩进,另一些使用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而不是bash
有什么想法吗?

kyks70gy

kyks70gy1#

我相信git config --global core.pager 'less -x1,5'
参考文献:

csbfibhn

csbfibhn2#

作为答案https://stackoverflow.com/a/10584237/1850340不适合我,因为我的颜色设置,我想出了以下解决方案:

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

这将在显示之前用4个空格替换所有制表符。(需要使用TAB解决方案来避免shell反斜杠转义)

5tmbdcev

5tmbdcev3#

在MacOS上你可以

$ git config --global core.pager 'less --tabs 4'

-x/--tabs是相同的选项,我更喜欢使用完整的选项。
-xn,...或--制表符=n,...
设置制表位。如果仅指定一个n,则制表位将设置为n的倍数。如果指定了多个值(以逗号分隔),则制表位将设置在这些位置,然后以与最后两个值相同的间距继续设置。例如,-x9,17将制表符设置在位置9、17、25、33等。n的默认值为8。

相关问题