如何为 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 禁用彩色终端输出?的主要内容,如果未能解决你的问题,请参考以下文章