用颜色设置ghci提示符

5

我试图在ghci提示符中使用终端颜色。

因此,当我打开ghci并尝试:

Prelude> :set prompt '\[\033[1haskell > \033[0m\]'
'\[\033[1\]haskell> \[\033[0m\] '

我知道这些代码是通过bash的echo-e标志来解释的。但是在ghci中我应该如何做到这一点?

2个回答

9
根据https://wiki.haskell.org/GHCi_in_colour,您可以使用:
:set prompt "\ESC[33m\STXhaskell > \ESC[m\STX"

一些解释说明:

  1. 只有双引号字符串被特殊处理;单引号被视为提示的一部分。
  2. 双引号字符串遵循 Haskell 的惯例。
  3. \STX 对应于您的 bash 提示符的 \]不清楚为什么 GHCi 不需要相当于 \[ 的东西。(也许它需要;我还没有深入研究过。)请参见http://trac.haskell.org/haskeline/wiki/ControlSequencesInPrompt以了解说明。

哦,所以 GHCi 在遇到 \ESC(和可能的任何不可打印字符)之后停止计数,直到看到 \STX - chepner
没关系,我应该更仔细地阅读我链接的页面 :) - chepner

3

Haskell字符转义代码是十进制的:

Prelude> :set prompt "\027[31mhaskell>\027[0m "

把同样的指令放在你的.ghci文件中也可以起作用。

你也可以使用例如\o33的八进制转义码,这更接近Bash。将八进制转换为十进制很无聊 :P - chi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接