我们如何在Windows上清除Iex中的屏幕

Cha*_*gwu 7 windows elixir

请问我们如何Iex在Windows上清除屏幕

Iex帮助中的记录方法不起作用:

  • clear/0 - 清除屏幕

此StackOverflow应答在Windows中也不起作用.

aju*_*ine 9

我发现它是可能的,因为Windows 10中的本机终端支持ANSI颜色和转义序列.唯一的事情是在iexshell中启用它.

根据https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/io/ansi.ex#L41,此选项是可配置的.作为快速解决方案,只需在iex代码后输入您的会话:

Application.put_env(:elixir, :ansi_enabled, true)

为了使其永久化,您可以iex~/.iex.exs文件中配置shell (https://hexdocs.pm/iex/IEx.html#module-configuring-the-shell).只需将以下内容粘贴到文件中:

IEx.configure [colors: [enabled: true]]

  • 您可能想要在Elixir的github上提交问题,以使他们知道Windows 10现在支持此问题。他们可能想要更改行为。 (2认同)

jwf*_*arn 5

您可以通过iex支持它们的控制台(如 ConEmu 或 Windows 10 控制台)直接在Windows 上使用 ANSI 代码。

这将清除屏幕iex

iex> IO.write "\e[H\e[J"; IEx.dont_display_result
Run Code Online (Sandbox Code Playgroud)

解释:

  • IO.write 输出到没有换行符的控制台
  • \e[是 ANSI CSI 代码的前缀
  • H是 CSI CUP –没有参数的光标位置代码,默认情况下将光标移动到第 1 行第 1 列
  • J是 CSI ED –不带参数的擦除显示代码,默认情况下从当前光标位置清除屏幕
  • IEx.dont_display_result防止清屏后显示:ok结果IO.write

您还可以使用IO.ANSI而不是原始转义码清除屏幕:

iex> IO.write [IO.ANSI.home, IO.ANSI.clear]; IEx.dont_display_result

这基本上clear/1是如何实现的