힘내 호출기는 적지 만 출력 색상을 일으키는 원인은 무엇입니까? 에 따르면 자체는 구문

less이 스레드 에 따르면 자체는 구문 강조를 수행 할 수 없습니다 .

그러나 git diff기본 페이저 인 채색 출력을 멋지게 표시합니다. 출력을 git diff파일로 리디렉션하면 색상 이스케이프 시퀀스가 ​​표시되지 않습니다.

합니까는 git diff그것이 존재의 보낸 알고, 그에 따라 형식 출력을? 어떻게할까요?


방금 git이 diff출력 (예 :)의 색상을 지정하는 것을 보았지만 git diff일반적으로 구문 강조 표시 방법을 모릅니다. 예 :

git show 415fec6:log.tex

TeX와 유사한 구문을 사용하지 않습니다.


git소스를 읽으면서 다음 힌트를 찾았습니다.

에서 diff.h:

int use_color;

나는 이전에 구문 강조를 언급하고 있었지만 정확하지 않았다. 내 말은 출력 색상입니다. 예를 들어

컬러 출력 예



답변

Git은 isatty()stdout이 tty인지 확인하기 위해 사용 합니다 : 이것은 호출기 ( pager.c )와 색상 ( color.c )을 사용 해야하는지 확인하는 데 사용됩니다 .


답변

달리는:

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;
}

답변

less와 색상을 지원 -r --raw-control-chars하고-R --RAW-CONTROL-CHARS

파이썬 pygmentize을 사용 하여 강조 표시를하고 파이프에 넣을 수 있습니다 .

이를 모두 결합하려면 수퍼 유저에 설명 된대로 적은 필터 구성하십시오