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

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

【问题讨论】:

  • 现在考虑接受 Steven Shaws 的回答吗?

标签: scala playframework sbt


【解决方案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" "$@"

【讨论】:

【解决方案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 一起工作。
猜你喜欢
  • 2015-07-15
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
相关资源
最近更新 更多