如何在 Powershell 中设置彩色 GHCi 提示符

Z-Y*_*Y.L 5 haskell prompt colors ghci

我在网上搜索了解决方案,找到了一些有用的信息,如下:

  1. 根据Glenn Slayden的回答,在 Win10 中设置默认启用 ANSI 终端控制。

  2. ghci.conf根据这里这里在配置文件中设置提示

以下是我的配置:

:set prompt "\ESC[33mImported Modules: %s\n\ESC[34m\x03BB> \ESC[0m"
:set prompt-cont "\ESC[31m > \ESC[0m"
Run Code Online (Sandbox Code Playgroud)

加载时ghci,不起作用(见下面的截图)

在此输入图像描述

看来只有第一个 ASCII 转义序列\ESC[33m生效,其余序列都没有渲染。

接下来我根据wiki进行如下修改:

:set prompt "\ESC[33m\STXImported Modules: %s\n\ESC[34m\STX\x03BB> \ESC[0m\STX"
:set prompt-cont "\ESC[31m\STX > \ESC[0m\STX"
Run Code Online (Sandbox Code Playgroud)

更好了,但似乎仍然只有第一个转义序列有效,而其他序列被忽略。

在此输入图像描述

这次我猜测转义序列的渲染可能与转义字符有关\n,所以我\n在每个序列的末尾添加并删除,\STX如下所示:

:set prompt "\ESC[33mImported Modules: %s\n\ESC[34m\x03BB> \ESC[0m\n"
:set prompt-cont "\ESC[31m > \ESC[0m\n"
Run Code Online (Sandbox Code Playgroud)

现在它可以按预期工作,但必须引入一些额外的\n,这会导致布局丑陋。

在此输入图像描述

现在我不知道为什么需要一些额外的东西\n才能在 GHCi 提示符中正确渲染转义序列以及如何解决这个问题。

感谢您提供任何信息!