web-dev-qa-db-ja.com

git show / git diffでタブ幅を4に設定する

職場では、何人かの開発者がいて、コードスタイルガイドがありません。タブでインデントする開発者もいれば、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";
+}

問題は git diffまたはgit show各タブは8スペースの幅で表示されます(実際、実際にはタブとして表示され、シェル(私の場合はbash)はタブを8スペースで表示しています。これを変更するにはbash設定が必要になると思います。しかし、一部の開発者はdiffではなくshowを使用するため、gitがzsh/bashに4つのスペースとしてタブを出力するオプションがあるかどうか知りたい] _。

何か案は?

67

私は信じている git config --global core.pager 'less -x1,5'

参照:

100
codemonkee

答えとして https://stackoverflow.com/a/10584237/185034 私の色設定が原因で私にはうまくいきませんでした。

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

これは、すべてのタブ文字を4つのスペースで置き換えてから、それをlessで表示します。 (シェルのバックスラッシュエスケープを回避するには、TABの回避策が必要です)

3
adius