Gitポケットベルが減少しましたが、出力が色分けされる原因は何ですか?

Gitポケットベルが減少しましたが、出力が色分けされる原因は何ですか?

lessこれによると、構文強調自体を実行することはできません。このスレッド

しかし、git difflessのデフォルトポケットベルでは、カラー出力を素敵に表示します。出力をファイルにリダイレクトすると、git diffカラーエスケープシーケンスは表示されません。

git diff転送される場所を知り、それに応じて出力フォーマットを指定できますか?何をしますか?


私はgitが出力に色を付けていることを確認しましたが、diff(例えばgit diff)一般的に構文を強調する方法がわかりません。例えば

git show 415fec6:log.tex

TeXに似た構文を有効にしません。


ソースを読みながらgit次のヒントを見つけました。

存在するdiff.h

int use_color;

さっき言及しました。構文強調しかし、これは間違っています。出力色を意味します。

カラー出力例

答え1

Gitはisatty()stdoutがttyであるかどうかを確認するために使用されます。これはポケットベルを使用する必要があるかどうかを確認するために使用されます(ポケットベル.c)と色(color.c)。

答え2

ランニング:

git diff --color=always > output

カラー出口を表示します。

くそ、ファイルで見つけましたgitcolor.c

static int check_auto_color(void)                                           
{                                                                           
  if (color_stdout_is_tty < 0)                                              
    color_stdout_is_tty = isatty(1);                                        
  if (color_stdout_is_tty || (pager_in_use() && pager_use_color)) {         
    char *term = getenv("TERM");                                            
    if (term && strcmp(term, "dumb"))                                       
      return 1;                                                             
  }                                                                         
  return 0;                                                                 
}  

答え3

less色をサポートでき-r --raw-control-chars-R --RAW-CONTROL-CHARS

Pythonを使用できますpygmentizeハイライトを作成して入力してください。

すべてを組み合わせるには、lessフィルタを設定します。スーパーユーザーが述べたように

関連情報