색상으로 구분된 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 -v. less -R표시되는 내용을 처리하기 위해 이스케이프 시퀀스가 ​​전달되도록 변경합니다.

less기본값은 LESS환경 변수를 지정하여 지정할 수 있습니다.예를 들어

export LESS=-R

git호출기가 수행해야 하는 작업에 대한 자신만의 아이디어를 가지십시오. 환경 변수가 설정되지 않은 경우 LESS예상대로 호출 시 로 설정됩니다.FRXlessgitLESS LESS일단 설정되면 변경되지 않고 그대로 유지되며 포함되지 않으면 출력을 읽을 수 없게 될 수 있습니다 -R.

less사용 가능한 구성 방법에는 두 가지가 있습니다 git. 전역 구성을 사용하거나 LESS변경하는 것입니다.core.pager설정,예를 들어

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

답변2

이것이 기본 동작입니다 less. less -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이것이 바로 이것이 당신을 당황하게 만든 이유입니다.

관련 정보