Sublime Text 3에서 Make에서 컬러 빌드 출력을 얻는 방법?


19

ST3 빌드 출력 창에 색상을 표시하는 방법은 무엇입니까?

gccfilter를 사용하여 빌드 출력을 채색하지만 ST3은 원시 이스케이프 시퀀스 만 표시합니다. 그것들을 처리 할 수있는 방법이 있습니까? 또는 gccfilter를 제거하고 ST3이 출력을 채색하도록하십시오 (예 : 경고와 오류로 grep하면 좋을 것입니다)?

답변:


16

최신 버전의 ST3 Makefile 빌드 시스템 ( Make.sublime-build 파일에 설명 된대로 )에는 이미 색상 화 된 출력을 생성하는 구문 정의가 포함되어 있습니다.

만족스럽지 않은 경우 터미널에서 ANSI 색상을 생성하는 빌드 시스템이 있고 Sublime Text 3의 빌드 출력 패널에 표시하려는 경우 대체적이고 일반적으로 작동하는 방법으로 수행 할 수있는 작업은 다음과 같습니다. .

이것이 RSpec을위한 Sublime Text 3 설치에서이 작업을 수행 한 방법이지만 일반 콘솔 / TTY에서 색상을 생성하는 도구를 사용하는 모든 경우에 완벽하게 적용 할 수 있다고 생각합니다.

1. TTY로 출력하지 않더라도 빌드 시스템이 색상을 출력하도록합니다.

빌드 시스템에 따라 다릅니다. 예를 들어, Ruby 및 RSpec의 .rspec경우 다음 내용으로 프로젝트에 파일을 작성할 수 있습니다 .

--color --tty

귀하의 경우에는 ANSI 색상 이스케이프 시퀀스로 출력을 생성하는 빌드 시스템이 이미 있습니다.

2. ANSIescape (SublimeANSI) 패키지 설치

패키지 제어를 통해 설치하는 것이 좋습니다. 설치 및 구성 지침은 패키지 저장소를 참조하십시오.

3. Sublime Text에서 새 빌드 시스템 정의를 작성하고 ANSI 색상을 인식하도록 구성하십시오.

예를 들어, 내 Colorized RSpec.sublime-build빌드 시스템 의 내용은 다음과 같습니다.

{
    "cmd": ["rspec", "-I ${file_path}", "$file"],
    "file_regex": "# ([A-Za-z:0-9_./ ]+rb):([0-9]+)",
    "working_dir": "${project_path:${folder:${file_path}}}",
    "selector": "source.ruby.rspec",
    // Recognize ANSI colors in the output
    "target": "ansi_color_build",
    "syntax": "Packages/ANSIescape/ANSI.tmLanguage"
}

마지막 두 구성 옵션은 SublimeANSI의 readme 에서 가져옵니다 . Make의 빌드 시스템에이를 적용 할 수 있습니다. Make.sublime-buildSublime Text 3의 패키지에서 파일 의 현재 버전을 기반으로 할 수 있습니다 .

4. 새로 작성된 빌드 시스템을 사용하여 파일 / 프로젝트를 빌드하십시오.

"Build with ..."메뉴를 사용하여 새 빌드 시스템을 선택하십시오. OS X에서 이것은입니다 Cmd + Shift + B. 이후 빌드 Cmd + B에서는이 마지막으로 선택된 빌드 시스템을 사용합니다.

그 모습은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


1
불행히도 ANSIEscape는 ANSI 이스케이프 코드를 파싱하는 데 약간의 제한이 있으므로 모든 출력이 도움이되지는 않습니다. 내가 찾은 몇 가지 제한 사항은 다음과 같습니다. * forground 후 배경 설정이 방해받지 않습니다. * <ESC> [01m과 같이] 두 자리 숫자를 사용하는 것은 거의 구문 분석되지 않습니다. * 줄을 정리하는 데 사용되는 일부 코드 (특히 <ESC> [K)는 구문 분석되지 않습니다.
— 따라서이

5

ST3 콘솔을 내가 찾은 색상을 구문 분석하는 방법은 현재 없습니다. 저자와 논의해야합니다. 콘솔에는 항상 단색 출력이 있음을 알았습니다. ST3는 현재 테마에 제공된 색상 만 사용합니다.

이스케이프 시퀀스를 제거하는 유일한 방법은 출력이 Sublime에 도달하기 전에 해당 시퀀스를 필터링하는 것입니다.


1
Heg, gccfilter를 사용하지 않고 쉽게 걸러 낼 수있었습니다. 단지 COLOR를 원합니다 !!
— Yeraze

그래, 가능했으면 좋겠다. 아마도 저자에게 그것을 밀어 넣는 것이 가능할 것입니다.
— Sly
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.