Windows 终端中的 Git Bash 不呈现 Picocli ANSI 颜色代码

问题描述

Adding Git-Bash to the new Windows Terminal 中所述,我已将 Git Bash 添加到 Windows 终端。我的个人资料如下:

{
    "guid": "{00000000-0000-0000-ba54-000000000002}","commandline": "%PROGRAMFILES%/git/usr/bin/bash.exe -i -l","icon": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico","name": "Git Bash","startingDirectory": "%USERPROFILE%",}

我有一个 Picocli 应用程序,它具有帮助消息的彩色输出。当我在 Windows 终端的 Git Bash 中调用帮助消息时,它会打印 ANSI 颜色代码,而不是为文本着色。为了演示这种行为,我使用了 Picocli 文档的 example application

ansi color codes not rendered in git bash in windows terminal

当我在 Git Bash 的终端上运行相同的命令时,颜色会正确呈现:

correct color output in windows git bash terminal

问题

如何在 Windows 终端中获取 Git Bash 以在 Picocli 应用程序中呈现 ANSI 颜色?

其他信息

如下图所示,在 Windows 终端中的 Git Bash 中可能会发生正确的文本着色(我用 Robot Framework 演示了这一点,它不使用 Picocli),所以我的问题是特定于 Picocli 的。

coloring in git bash in windows terminal

解决方法

为了在 Windows 上显示 ansi 颜色,我强烈建议应用程序结合使用 Jansi 库和 picocli。

除非您使用的特定软件(例如 java)通过调用带有 ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400) 标志的 SetConsoleMode API 启用 ANSI 处理(java 没有),否则您将看不到颜色或获得 ANSI 处理用于该应用程序。

Jansi 解决了这个问题。

有关详细信息,请参阅:https://picocli.info/#_windows

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...