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.