Car*_*rós 64 git bash whitespace tabs spaces
在工作中,我们是几个开发人员,并没有代码样式指南,一些开发人员缩进标签,而另一些开发人员有4个空格(幸运的是没有人使用不同于4个空格的空格缩进).一般来说这不是(大)问题,因为在我们的编辑器中我们设置tabwidth=4并且所有缩进看起来都是正确的.
但是,git diff或者git 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";
+}
Run Code Online (Sandbox Code Playgroud)
问题是git diff或者git show每个选项卡显示为8个空格(实际上显示为选项卡,而shell(在我的情况下是bash)将选项卡显示为8个空格.我想必须有一些bash配置要更改这个,但我想知道git是否有选项将选项卡输出为diff/中的4个空格show,因为有些开发人员使用zsh而不是bash.
有任何想法吗?
cod*_*kee 103
我相信 git config --global core.pager 'less -x1,5'
参考文献:
在 MacOS 上你可以这样做
$ git config --global core.pager 'less --tabs 4'
Run Code Online (Sandbox Code Playgroud)
-x/--tabs是同一个选项,我更喜欢使用完整的选项。从man less
-xn,... 或 --tabs=n,...
设置制表位。如果仅指定一个 n,则制表位设置为 n 的倍数。如果指定了多个用逗号分隔的值,则在这些位置设置制表位,然后以与最后两个相同的间距继续。例如,-x9,17 将在位置 9、17、25、33 等处设置制表符。n 的默认值为 8。
由于我的颜色设置,答案/sf/answers/740896621/对我不起作用,我想出了以下解决方案:
TAB=$'\t' && git config --global core.pager "sed 's/$TAB/ /g' | less" && unset TAB
Run Code Online (Sandbox Code Playgroud)
这会将所有制表符替换为 4 个空格,然后再用 less 显示。(需要 TAB 解决方法来规避 shell 反斜杠转义)