git diff で "ESC["というゴミが表示される件

git diff で "ESC[" とゴミが表示される場合の解決方法です

ゴミが表示される原因

pager として /usr/bin/less を使っている場合に ESC[ が表示される場合があります

解決方法(その1)

/usr/bin/pager を lv に変更します

/usr/bin/pager はシンボリックリンクで alternatives で more や less やlv コマンドへのリンクとなっています


確認は readlink コマンドを使うと簡単です

$ readlink -f /usr/bin/pager

/usr/bin/less と表示される場合は pager はlessになっています

pagerを lv に切り替えるには次のようにします

$ sudo apt install lv
$ sudo  /usr/bin/update-alternatives --set pager  /usr/bin/lv

解決方法(その2)

環境変数 PAGER で pager を切り替えることもできます

具体的には ~/.bashrc などに以下の一行を加えます

export PAGER=/usr/bin/lv

これで git は pagerとして /usr/bin/lvを使うようになります

解決方法(その3)

pager は less をつかい,環境変数 LESS でlessの挙動を変更します

具体的には ~/.bashrc などに以下の一行を加えます

export LESS="-eirMX"

まとめ

複数の解決方法がありますが,

  • root権限がない場合は 方法その3
  • root権限が使える場合は方法その1

が良いと思います