如何从 Sublime Text 3 中的 Make 获取彩色构建输出?

如何从 Sublime Text 3 中的 Make 获取彩色构建输出?

如何让 ST3 构建输出窗口呈现颜色?

我正在使用 gccfilter 为我的构建输出着色,但 ST3 只显示原始转义序列。有什么方法可以让它处理它们吗?或者删除 gccfilter 并仅让 ST3 为输出着色(例如,只需在警告和错误上 grep 就可以了)?

答案1

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) 包

建议通过 Package Control 安装。请参阅包的 repo 以获取安装和配置说明。

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 的自述文件。您可以将其应用于 Make 的构建系统。您可以基于当前版本的Make.sublime-build来自 Sublime Text 3 包的文件。

4. 使用新创建的构建系统构建您的文件/项目。

使用“构建方式...”菜单选择新的构建系统。在 OS X 上,这是Cmd + Shift + B。后续构建Cmd + B将使用最后选择的构建系统。

它看起来是这样的:

在此处输入图片描述

答案2

目前没有办法让 ST3 控制台解析我发现的颜色。这需要与作者讨论。我之前注意到控制台总是单色输出。ST3 目前仅使用您为其应用的主题所提供的颜色。

摆脱转义序列的唯一方法是在输出到达 Sublime 之前将其过滤掉。

相关内容