Erlang 和 Elixir 的彩色 REPL shell

Erlang and Elixir's colorful REPL shells

Learn some Erlang or IEx colorize the REPL shell? Is kjell 如何成为稳定的替代品?

我不知道 kjell 是否是 Erl 的稳定替代品,但它不会用于 IEx。

至于颜色是如何完成的;据我所知,它是用 ANSI Escape Sequences 完成的。

在 LYSE 中完成此操作的方法是使用名为 highlight.js 的 javascript 插件,因此 LYSE 实际上并没有这样做,而是您的浏览器在这样做。有 plugins/modes 可用于 highlight.js 的大多数主流(ish)语言。如果您对 Web 感兴趣,这是一种方法(除非用户无法使用 JS 或将其关闭)。

这实际上根本不是要突出显示的 shell,它在浏览器之外的任何地方也没有用。我一直在想办法更通用地做到这一点,最初是通过在 HTML 和 XML 文档中插入静态格式(给它一个文档,它输出一个 Erlang 语法以某种方式突出显示每当这是 detected/tagged)。我还没有一个像样的项目可以为此发布(在我的优先列表 atm 中非常低),但我 可以 为您指明一些坚实灵感的方向:来源 wx:demo.

请特别注意函数 demo:code_area/1。在那里您将看到标记化例程如何用于为 wx:demo 应用程序中的源代码文本显示区域提供突出显示提示。这可以为构建您自己的源 highlighting/display 实用程序提供坚实的基础。 (我认为这并非不可能,考虑到今天常用的每个终端都能正确响应 ANSI 颜色代码,为 shell 编写一个直接突出显示终端输入的插件——并不是说有很大的要求目前此功能。)

编辑(由 Fred the Magic Wonder Dog 的评论提示)

关于 ANSI 颜色代码的主题,如果这是您真正想要的,它们很容易实现为您在终端中返回的任何字符串值的前缀。终端将它们转义,因此您不会看到字符,但会执行代码表示的任何操作。没有终止(它不像包含文本的标记标签)并且通常没有 "default color to go back to" 的概念(尽管有大量的 telnet 和终端模式的扩展可以实现像这样的各种废话)。

基本着色的一个例子是telcon:greet/0 and telcon:sys_help/0 functions in the v0.1 code of ErlMUD (along with a slew of other places -- colorization in games is sort of a thing). What you see there is a pre-built list per color, but this could be represented any way that would get those values at the front of the string. (I just happened to remember the code value sequences, but didn't remember the characters that make them up; the next version of the code represents this somewhat differently.) Here is a link to a list of ANSI color codes and a discussion about colorizing the shell。玩转!书呆子般的乐趣,1980 年代的风格!

哦,我差点忘了...如果你真的想在没有像ncurses to help you, take a look at termcap.

这样愚蠢的小孩玩具的情况下进入兔子洞