如何从 IntelliJ IDEA 的 bash 设置 SBT 以避免格式化字符被破坏?

Posted

技术标签:

【中文标题】如何从 IntelliJ IDEA 的 bash 设置 SBT 以避免格式化字符被破坏?【英文标题】:How to setup SBT from bash from IntelliJ IDEA to avoid formatting characters being broken? 【发布时间】:2019-05-19 20:10:13 【问题描述】:

在 Windows 上运行时,我已将 IntelliJ IDE 中的默认终端从默认 Windows cmd 更改为 bash(我使用的是与 Git 一起安装的终端,位于 C:\Program Files\Git\bin\bash.exe)。它工作得很好,唯一的问题是从终端运行sbt 时,会显示一些奇怪的字符(我假设它们是一些用于格式化输出的控制字符)。

当我直接从 Windows 中作为独立窗口启动的 bash 运行 sbt 时,不会发生这种情况。

我可以更改所涉及的三个组件(sbt、IntelliJ、bash)中的任何一个设置(环境变量或配置文件),以便我看不到这些格式字符被误解了吗?如果它们能起作用并影响格式,那将是一个不错的奖励,但这对我来说不太重要。

智能:

独立:

【问题讨论】:

【参考方案1】:

sbt 默认为控制台输出着色,这在 Windows 上不起作用,但启动器脚本可能不会禁用 IntelliJ 终端脚本中的代码。

您可以通过将-Dsbt.log.noformat=true 传递给 sbt 来禁用颜色

【讨论】:

这些设置是否可以写入一些配置文件,这样我每次从 bash 调用 sbt 时都不必输入这个?【参考方案2】:

如果您将以下内容添加到您的 .bashrc 文件中,您可以保留颜色和格式:

sbt() 
    /c/progra~2/sbt/bin/sbt.bat "$@"

export -f sbt

.bashrc 可以在您的 %USERPROFILE% 目录中找到(或创建),例如C:\Users\用户名\.bashrc.

如有必要,替换为 sbt.bat 的不同路径,但必须不包含空格。

之后重启你的终端,或者运行source ~/.bashrc

这会导出一个 bash 函数,该函数会导致“sbt”运行 sbt 批处理文件启动器,而不是原本会运行的 shell 脚本启动器。批处理启动器显然在处理 Windows 上的输出方面做得更好。 (我也将它用于从 Bash 调用时以其他方式失败的 gcloudgsutil 命令。)

【讨论】:

【参考方案3】:

找到sbtopts文件(Windows location默认为C:\Program Files (x86)\sbt\conf)并确保它包含以下行并且没有被注释掉:

-no-colors

【讨论】:

以上是关于如何从 IntelliJ IDEA 的 bash 设置 SBT 以避免格式化字符被破坏?的主要内容,如果未能解决你的问题,请参考以下文章

sh 用于将多个IntelliJ IDEA(或其他JetBrains IDE)语法颜色主题组合到单个jar文件中的Bash脚本

如何让 IntelliJ IDEA 从 Maven 更新我的依赖项?

如何阻止 IntelliJ IDEA 从 .properties 文件中删除空行?

如何从 IntelliJ IDEA 向远程 Spark 集群提交代码

IDEA Intellij 如何调试从 Java 类调用的 PL/SQL 代码

如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?