Git diffのタブ幅を設定する方法

こんにちは、CTOの山岡(@hiro_y)です。

(諸事情あって)インデントにタブとスペースが入り交じったPHPファイルを編集していて、git diffのデフォルトのタブ幅が8であることに気付きました。タブ幅は4として表示したいところ。

        public function foo()  // ここもタブインデント
        {  // ここもタブインデント
-               echo "ここはタブでインデントされているところ\n";
+        echo "ここはスペース4文字分でインデントされているところ\n";

ファイル内、もしくはプロジェクト全体のインデントのルールを統一して適用すればよいだけなのですが、一旦とりあえずdiffを見やすくしたかったので、Gitのcore.pagerの設定を変えて見やすいようにしました。

$ git config --global core.pager 'less -x1,5,9,13,17'

.gitconfigに書くならこのような感じで。

[core]
pager = less -x1,5,9,13,17

less -x4とタブ幅を4に設定してしまいたくなりますが、git diffの表示ではdiffで使われる+-といった記号が左端に挿入されるので、その1文字分ずらして表示してあげると丁度よくなります。

lessの-xオプションではカンマ区切りで複数位置を指定することができるので、「4の倍数+1」を指定。ちなみにless -x1,5,9,13,17less --tabs=1,5,9,13,17とも書けるので、お好みでどうぞ。

結果、違和感のないgit diffの表示にして見やすくすることができました。

     public function foo()  // ここもタブインデント
     {  // ここもタブインデント
-        echo "ここはタブでインデントされているところ\n";
+        echo "ここはスペース4文字分でインデントされているところ\n";

参考