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


19

如何使颜色进入ST3构建输出窗口?

我正在使用gccfilter为我的生成输出着色,但是ST3只显示原始转义序列。有什么办法可以处理它们吗?还是删除gccfilter并仅使ST3着色输出(例如,仅在警告和错误时使用grep就可以了)?

Answers:


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

建议通过Package Control安装它。有关安装和配置说明,请参阅软件包的回购。

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-buildSublime Text 3软件包中文件的当前版本。

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

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

外观如下:

在此处输入图片说明


1
不幸的是,ANSIEscape在解析ANSI转义代码方面有一些限制,因此并非所有输出都会受益。这是我发现的一些局限性:*在forground不打扰后设置背景。*不能准确地解析使用两位数字(例如<ESC> [01m]中的数字)*无法解析用于清除行的某些代码(尤其是:<ESC> [K)。这使得该方法不完全适用于-例如
-GCC

5

当前无法使ST3控制台解析我发现的颜色。这将需要与作者讨论。我之前注意到控制台始终具有单色输出。ST3当前仅使用已应用于其主题的颜色。

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


1
呵呵,我可以不用使用gccfilter就可以轻松过滤掉它们。
Yeraze 2014年

是的,我希望有可能。也许把它推给作者会完成的。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.