컬러 출력물을 덜 유지할 수 있습니까?


답변:


360

사용하다:

git diff --color=always | less -r

--color=always게가 git출력 파이프 (TTY 아닌) 인 경우에도, 출력 컬러 코드에 관한 것이다. 그리고 -r이 이야기하는 less그 색상 코드 및 기타 이스케이프 시퀀스를 해석 할 수 있습니다. -RANSI 색상 코드에만 사용하십시오 .


3
@ ripper234. 최근 GITS으로, git config color.ui true색깔의 출력을 얻기에 충분해야 하고 자동으로 긴 출력에 대한 호출기를 실행합니다.
Stéphane Gimenez

4
이 Q / A watch --color 'git diff --cached --color=always'와 병행하여 그 친구들이 당신에게 더 멋진 경험을 제공 할 수 있습니다.
Alois Mahdal

27
less -R더 잘 사용하지 않습니까 (또는 export LESS=R에서 /etc/profile)? 왜 ANSI "color"이스케이프 시퀀스 이외의 것을 표시하도록 허용 하시겠습니까? 또한 매뉴얼 페이지는 다음과 같이 말합니다Warning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
x-yuri

5
-r옵션 을 지정하지 않은 경우 less프롬프트 에서 "-r"을 입력하면 됩니다. 물론 이것은 대부분 또는 적은 옵션으로 작동합니다 (예 : -i무시).
haridsv

3
grep --color=always같은 방식으로 작동합니다. 이것은이 질문이나 답변의 일부는 아니지만 그 질문에 대해 인터넷 검색을 통해 여기에 도착했습니다.
Frank Bryce

57

다른 옵션은 색상을 활성화하고 'less -r'을 호출기로 사용하는 것입니다.

git config --global color.ui true
git config --global core.pager 'less -r'

결과

[color]
    ui = true
[core]
    pager = less -r

~ / .gitconfig에서

자세한 내용은 Pro Git 책을 참조하십시오 .


7
Git 2.11을 사용 color.ui true하면 호출기로 작동하지 않지만 작동했습니다 color.ui always. 답변이 게시 된 후 변경되었을 수 있습니다.
Tom Zych

1
이 옵션 (색상을 활성화하고 기본적으로 페이저로 'less -r'을 사용) color.ui true은 쉼표와 같은 작업을 수행 git -p diff하고 git -p status(여기서는 -p모든 출력을 $ PAGER로 기본적으로 파이프 함을 의미 함 less) 이전 버전의 git (예 : , 힘내 1.7.1). 그러나 또는 color.ui always을 직접 지정할 때 색상 출력을 얻으려면 여전히 git에 색상 코드를 출력하도록 지시 합니다 ( "출력이 파이프가 아닌 파이프 임에도 불구하고") . 출력 리디렉션을 명시 적으로 지정하면 호출기에서 종료 한 후 출력이 표시되지 않습니다. git status | less -rgit diff | less -r
kenichi

29

-r( --raw-control-chars) 옵션을 사용 하여 -RANSI 이스케이프 시퀀스 만 줄입니다.

에 대한 별칭이 있습니다 ~/.bashrc

alias rless='less -r'

7
실제로 나는 방금했다 alias less='less -r'. 하지 말아야 할 이유가 있습니까?
ripper234

3
@ ripper234 : -r필요하지 않을 때 사용 하면 시각화 문제 가 발생할 수있는 경우가 있다는 것을 모호하게 기억 합니다.
enzotib

1
예를 들어, 파이프를 ack사용 less -r하면 캐리지 리턴을 잃을 수 있습니다
New Alexandria

6
\less시각화가 엉망인 경우 에만 사용할 수 있습니다 .
Brian Peterson

4
어, 별명 less을 지정할 필요는 없습니다 . $LESS환경 변수를 항상 제공하려는 플래그 세트로 설정하십시오 less. 예 :export LESS='-MRq -z-2 -j2’
wjv


10

"use less -r"에 다른 버전을 추가하기 만하면됩니다.

환경 변수 LESS를 값 r과 함께 사용하십시오 (또는 이미 존재하는 모든 것에 r을 추가하십시오)

예를 들어, .bashrc에서 사용하면

  export LESS=-Xr

(X는 덜 나가면 화면이 지워지지 않습니다)


1
불행히도 -X는 또한 나를 위해 마우스 스크롤을 s습니다. : c
Xerus


3

나는 이것이 오래 알고 많은 사람들이 이미 정답을 제공 한하지만 난 항상 사용하는 것이 낫다는 것을 추가하고 싶습니다 less -R아니라 less -r당신은 ANSI 색상을 필요로하는 경우 -r문자를 표시하는 문제를 구분 할 수 있습니다.

매뉴얼에서 :

   -r or --raw-control-chars
          Causes "raw" control characters to be displayed.   The  default
          is  to display control characters using the caret notation; for
          example, a control-A (octal 001) is displayed as  "^A".   Warn‐
          ing:  when the -r option is used, less cannot keep track of the
          actual appearance of the screen (since this depends on how  the
          screen responds to each type of control character).  Thus, var‐
          ious display problems may result,  such  as  long  lines  being
          split in the wrong place.

   -R or --RAW-CONTROL-CHARS
          Like  -r,  but only ANSI "color" escape sequences are output in
          "raw" form.  Unlike -r, the  screen  appearance  is  maintained
          correctly  in  most  cases.   ANSI "color" escape sequences are
          sequences of the form:

               ESC [ ... m
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.