Làm cách nào để có được kết quả xây dựng màu từ Make in Sublime Text 3?


19

Làm thế nào bạn có thể có được màu sắc trong cửa sổ đầu ra xây dựng ST3?

Tôi đang sử dụng gccfilter để tô màu đầu ra bản dựng của mình, nhưng ST3 chỉ hiển thị các chuỗi thoát thô. Có cách nào để có được nó để xử lý chúng? Hoặc để loại bỏ gccfilter và chỉ cần lấy ST3 để tô màu đầu ra (ví dụ: chỉ cần grep cảnh báo & lỗi sẽ ổn)?

Câu trả lời:


16

Các phiên bản gần đây của hệ thống xây dựng Makefile của ST3 (như được mô tả trong tệp Make.sublime-build ) đã chứa định nghĩa cú pháp tạo ra đầu ra được tô màu.

Nếu bạn không hài lòng với điều đó, thì đây là những gì bạn có thể làm như một cách tiếp cận thay thế và thường hoạt động nếu bạn có một hệ thống xây dựng tạo ra màu ANSI trong một thiết bị đầu cuối và bạn muốn chúng hiển thị trong bảng đầu ra bản dựng của Sublime Text 3 .

Đây là cách tôi đã thực hiện trong bản cài đặt Sublime Text 3 cho RSpec, nhưng tôi nghĩ nó hoàn toàn có thể áp dụng trong mọi trường hợp với một công cụ tạo màu trong bảng điều khiển / TTY thông thường:

1. Buộc hệ thống xây dựng của bạn xuất màu ngay cả khi hệ thống không xuất ra TTY.

Điều này phụ thuộc vào hệ thống xây dựng. Ví dụ: đối với Ruby và RSpec, bạn có thể tạo một .rspectệp trong dự án của mình với các nội dung sau:

--color --tty

Trong trường hợp của bạn, bạn đã có một hệ thống xây dựng tạo đầu ra với các chuỗi thoát màu ANSI.

2. Cài đặt gói ANSIescape (SublimeANSI)

Bạn nên cài đặt nó thông qua Gói kiểm soát. Xem repo của gói để biết hướng dẫn cài đặt và cấu hình.

3. Tạo định nghĩa hệ thống xây dựng mới trong Sublime Text và định cấu hình để nhận dạng màu ANSI

Ví dụ, đây là nội dung của Colorized RSpec.sublime-buildhệ thống xây dựng của tôi :

{
    "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"
}

Hai tùy chọn cấu hình cuối cùng được lấy từ readme của SublimeANSI . Bạn có thể áp dụng điều này cho hệ thống xây dựng của bạn cho Make. Bạn có thể căn cứ vào phiên bản hiện tại của Make.sublime-buildtệp từ các gói của Sublime Text 3.

4. Xây dựng tệp / dự án của bạn bằng hệ thống xây dựng mới được tạo.

Sử dụng menu "Xây dựng với ..." để chọn hệ thống xây dựng mới. Trên OS X, đây là Cmd + Shift + B. Các bản dựng tiếp theo Cmd + Bsẽ sử dụng hệ thống xây dựng được chọn cuối cùng này.

Đây là vẻ ngoài của nó:

nhập mô tả hình ảnh ở đây


1
Thật không may, ANSIEscape có một số hạn chế trong việc phân tích mã thoát ANSI, vì vậy không phải tất cả đầu ra đều có lợi. Dưới đây là một số hạn chế tôi đã tìm thấy: * Đặt nền sau khi khu vực không được xen kẽ. * Sử dụng hai chữ số (như trong <ESC> [01m) không được phân tích cú pháp rõ ràng * Một số mã được sử dụng để làm sạch dòng (đáng chú ý: <ESC> [K) không được phân tích cú pháp. Điều này làm cho phương pháp này không hoàn toàn phù hợp với - ví dụ - GCC
Emilio Garavaglia

5

Hiện tại không có cách nào để làm cho bảng điều khiển ST3 phân tích màu mà tôi đã tìm thấy. Điều này sẽ cần phải được thảo luận với tác giả. Tôi đã nhận thấy trước đó rằng giao diện điều khiển luôn có đầu ra đơn sắc. ST3 hiện chỉ sử dụng các màu được cung cấp với chủ đề mà bạn đã áp dụng cho nó.

Cách duy nhất để thoát khỏi các chuỗi thoát là lọc chúng ra trước khi đầu ra chạm vào Sublime.


1
Heh, tôi có thể dễ dàng lọc chúng ra bằng cách không sử dụng gccfilter .. Tôi chỉ muốn MÀU !!
Mitchaze

Vâng, tôi ước nó có thể. Có lẽ đẩy nó cho tác giả sẽ hoàn thành nó.
Sly
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.