Posted at

ターミナルに突如現る! ESC[ を非表示にする方法


はじめに

たびたび、ターミナルに何かしらを出力する際、ESC[ という文字列が出力結果に散りばめられ、非常に見にくい表示になっていました。

私の場合は、git diff の出力結果にこのような問題が見られ、解決策がわからないままでしたが、ある英語サイトにソリューションが掲載されていましたので、日本語版として同じ問題に遭遇した人の一助になればと思い、本記事を投稿します。


ソリューション

最初に解決策を示します (❯コマンドプロンプトですので、入力しないで下さい)。

❯ export LESS="-iRMXS"

上記のコマンドを実行するだけです。

こちらの英語サイトによると、less コマンドに問題があったとか。環境変数 $LESS が誤って設定されていることに原因があったそうです。

Rオプションをつけることで、ANSI カラーエスケープシーケンスを解するようにできます。

ですので、実は、次のコマンドでも問題は解決できます。

❯ export LESS="-R"

ただ、Rオプションに加えて、iMXSのオプションをつけることで、幾分幸せになることができますよ(理由は補足に示します)。


変化

私の場合、以下のように見やすくなりました。

苦しみながら、解読していた時が懐かしいです。笑

・before

❯ git diff

ESC[1mdiff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erbESC[m
ESC[1mindex 3295719..2feb624 100644ESC[m
ESC[1m--- a/app/views/users/show.html.erbESC[m
ESC[1m+++ b/app/views/users/show.html.erbESC[m
ESC[36m@@ -118,7 +118,6 @@ESC[m
</div>ESC[m
</div>ESC[m
ESC[m
ESC[31m-ESC[m
<script>ESC[m
$(".tab").on("click", function() {ESC[m
console.log(this);ESC[m

・after

❯ git diff

diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 3295719..2feb624 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -118,7 +118,6 @@
</div>
</div>

-
<script>
$(".tab").on("click", function() {
console.log(this);


補足

私が設定しているlessコマンドの便利なオプションを表にまとめました。

オプション
意味

-i
検索時に全部小文字で入力した時だけ、大文字小文字を無視する

-M
詳しいプロンプトを表示する(現在の表示位置を%で表示する等)

-X
less 終了時に画面をクリアしない 

-S
一行の長さが画面幅を超える場合でも改行しない


参考資料