如何为 sbt/play 禁用彩色终端输出?

Posted

技术标签:

【中文标题】如何为 sbt/play 禁用彩色终端输出?【英文标题】:How can colored terminal output be disabled for sbt/play? 【发布时间】:2011-05-15 02:22:59 【问题描述】:

我想禁用从 sbt/play 记录的颜色转义码。这可能吗?如果是,有没有办法在不更改配置的情况下做到这一点 - 即通过命令行开关或系统属性。

【问题讨论】:

现在考虑接受 Steven Shaws 的回答吗? 【参考方案1】:

0.13.8(可能更早)版本开始,您现在可以简单地使用-no-colors 选项来进行sbt。例如

sbt -no-colors test

【讨论】:

如果您使用的是更新版本的 sbt,这比接受的答案更好 拥有这两个命令有什么意义呢? dependencies 在我的 sbt 设置中甚至不是有效的 sbt 命令。 我编辑了答案以使用test 而不是dependencies,并明确说明了关于 sbt 版本的隐含点。这应该解决@matanster 点。 在 sbt 0.13.13 上运行时出现错误“Not a valid command: no-colors”【参考方案2】:

通过添加以下内容,我能够从 Cygwin 中的 SBT 获得彩色输出:

-Djline.terminal=jline.UnixTerminal

另外我发现我还需要在 Cygwin.bat 中添加以下行:

set CYGWIN=tty ntsec

添加后,SBT 提供了非常漂亮的彩色输出。此外,我建议查看 Console2,因为它可以通过 Cygwin 挂钩,但在我看来提供了更好的界面:

http://sourceforge.net/projects/console/

【讨论】:

我用console2和cmd都试过了,有几个问题:tab补全不起作用,退格不起作用,异常无效终端类型:启动控制台时的jline.UnixTerminal【参考方案3】:

您可以简单地将系统属性sbt.log.noformat 设置为true。如果你想例如在 Vim 中使用 SBT 你可以创建这样的脚本:

#!/bin/bash
java -Dsbt.log.noformat=true $JAVA_OPTS -jar "$HOME/bin/sbt-launch.jar" "$@"

【讨论】:

这也可以作为 sbt 本身的参数:sbt -Dsbt.log.noformat=true,如果你使用sbt "the rebel cut",你可以使用参数-no-colors @jilen - 你有玩的例子吗?我似乎不知道该怎么做:***.com/q/22665543/20770【参考方案4】:

听起来您的平台与实际的 jline.terminal 属性不匹配。我只是在这里猜测,但是当我按照 Daniel 在 Windows 命令行上的建议传递参数时,我也看到了颜色转义码。

因此,您必须确保该属性与您的平台相匹配,即 Windows 上的 WindowsTerminal 和 Unix 上的 UnixTerminal。

如果这没有帮助,那么您可能在不受支持的平台上,在这种情况下,website 建议使用:

-Djline.terminal=jline.UnsupportedTerminal

【讨论】:

抱歉澄清一下,不是着色不起作用,只是我希望能够禁用。 @Moritz 的回答帮助了我。【参考方案5】:

好吧,您可以通过安装 Cygwin 并传递此参数在 Windows 上获取颜色:

-Djline.terminal=jline.UnixTerminal

所以我会查找 jline 参数,看看是什么禁用了颜色编码。

【讨论】:

您使用的是 rxvt 还是 mintty?在使用 cmd.exe 的默认 cygwin 控制台下,我得到了那种输出:←[0m[←[0minfo←[0m] ←[0mBuilding project... @huynhjl 不,我从来没有尝试过让这个技巧发挥作用。不过,我对输出有点惊讶。 TERM 的价值是什么? TERM 设置为 cygwin。我现在对 cygwin 的主要烦恼是多行编辑不起作用(一旦换行,就无法返回并使用正确的视觉反馈编辑前一行)。我发现 jline 在 cygwin 下无法处理 win32 上的 ansi 代码。所以我很想看看颜色如何与 sbt 一起工作。

以上是关于如何为 sbt/play 禁用彩色终端输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Python 日志记录输出着色?

如何将彩色文本输出到 Linux 终端?

Python终端如何输出彩色字体

python终端如何输出彩色字体

在终端中输出彩色文字

Python终端如何输出彩色字体