1

在这篇Elixir 论坛帖子之后,我创建了一个 shell 脚本来通过运行查看 Elixir 文档IEx.Helpers.h

elixir -e "require IEx.Helpers; IEx.Helpers.h($1)"

$1脚本的命令行参数在哪里)。(例如,命令

elixir -e "require IEx.Helpers; IEx.Helpers.h(List)"

提供模块的文档List。)

这是超级好。不再需要跑来iex查看文档。终端的默认格式工作得很好而且很漂亮。但是,如果我将输出通过管道传输到寻呼机(或者更一般地说,如果输出不是 TTY 设备),则格式会更改 - 没有 ANSI 颜色的纯 ASCII 输出。

IEx.Helper.h问题:在非 TTY 情况下,我如何配置或直接提供相同的输出?

(看起来有IEx.configure可以用来更改格式的功能,但我看不到任何关于非 TTY 输出的信息。另一种方法是使用一些合适的小型外部程序来创建伪 TTY,重定向stdout到之前运行elixir命令...但我更愿意从 Elixir 端解决输出问题。)

4

1 回答 1

2

无论使用什么输出设备,人们都可以通过欺骗IEx.Config.colors_enabled?/1不使用复杂的检查来强制颜色IO.ANSI.enabled?/0

elixir -e "
  Application.put_env(:iex, :colors, [enabled: true]);
  require IEx.Helpers;
  IEx.Helpers.h(List)"
于 2018-10-08T16:37:46.300 回答