色分けされたgit diff -> lessは色を正しく表示しません

色分けされたgit diff -> lessは色を正しく表示しません

私はSLES11システムでリモートで作業しています(残念ながら私にとってはそうです)。このコンピュータでは、特にgitを使用してgit diff結果をlessいくつかの色に渡します。これで何らかの理由で、色ではなく次のような線が表示されます。

ESC[1mdiff --git a/path/to/file.h b/path/to/file.hESC[m
ESC[1mindex 1ab153f..0491db9 100644ESC[m

など。

私は端末が色をサポートしていることを知っています(lsの結果は色です)。TERM=xtermそしてそれはCOLORTERM=1私の環境にあります。

色の違いを正しく表示するにはどうすればよいですか?

答え1

〜のようにテデンと言うless'デフォルトの動作は、スタイル別に特殊文字に対応する項目を表示することですcat -vless -R表示される内容を処理するためにエスケープシーケンスが配信されるように変更します。

lessデフォルト値はLESS環境変数を指定することで指定できます。例えば

export LESS=-R

gitページャが実行する必要があることについて独自のアイデアを持ってください。環境変数が設定されていない場合は、期待LESSどおりに呼び出し時に設定されます。FRXlessgitLESS はいLESS設定すると変更されずにそのまま保持され、含まれないと出力が読み取れなくなることがあります-R

less利用可能な設定方法には2つありますgit。グローバル構成を使用またはLESS変更することです。このcore.pager設定例えば

git config --global core.pager "less -R"

答え2

これがデフォルトの動作ですlessless -Rカラー出力を表示するには、man less以下を使用します。

   -R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences and OSC  8  hy‐
          perlink  sequences  are  output  in "raw" form.  Unlike -r, the
          screen appearance is maintained correctly, provided that  there
          are  no  escape sequences in the file other than these types of
          escape sequences.  Color escape sequences  are  only  supported
          when  the  color  is changed within one line, not across lines.
          In other words, the beginning of each line  is  assumed  to  be
          normal  (non-colored),  regardless  of  any escape sequences in
          previous lines.  For the purpose of keeping track of screen ap‐
          pearance,  these  escape  sequences are assumed to not move the
          cursor.

lessおそらくエイリアスとして設定されたシステムに慣れていたでしょう。less -Rこれがまさにこれがあなたをパニックにさせた理由です。

関連情報