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

如何在Windows上清除Iex中的屏幕,windows,elixir,Windows,Elixir,请告诉我们如何在Windows上的Iex中清除屏幕 Iex帮助中记录的方法不起作用: 清除/0-清除屏幕 在Windows中也不起作用。是的,据我所知,我们无法在Windows上清除它。如果有一个逃逸,我们可以输出到IO设备以清除Windows上的屏幕,我很想知道并将此功能添加到Windows中。:) 您最好的选择(如果这对您来说是一个真正的问题而不是麻烦)是使用支持ANSI转义序列的备用Windows shell。请参阅,了解为什么不能在Windows Cmd Shell中简单地使用ANS

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

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

  • 清除/0
    -清除屏幕

在Windows中也不起作用。

是的,据我所知,我们无法在Windows上清除它。如果有一个逃逸,我们可以输出到IO设备以清除Windows上的屏幕,我很想知道并将此功能添加到Windows中。:)

您最好的选择(如果这对您来说是一个真正的问题而不是麻烦)是使用支持ANSI转义序列的备用Windows shell。请参阅,了解为什么不能在Windows Cmd Shell中简单地使用ANSI转义序列。一个支持ANSI的命令shell替代方案是。在您的计算机上配置ConEmu留给读者作为练习。

您可以在Windows上的控制台(如ConEmu或Windows 10控制台)上直接在iex中使用ANSI代码

这将清除iex中的屏幕:

iex> IO.write "\e[H\e[J"; IEx.dont_display_result
说明:

  • 不带换行符的控制台输出
  • \e[
    是ANSI的前缀
  • H
    是无参数的CSI CUP–光标位置代码,默认情况下将光标移动到第1行第1列
  • J
    是无参数的CSI ED–擦除显示代码,默认情况下从当前光标位置清除屏幕
  • IEx.dont\u display\u result
    防止
    IO.write的
    结果在屏幕清除后显示
您还可以使用
IO.ANSI
而不是原始转义码清除屏幕:

iex>IO.write[IO.ANSI.home,IO.ANSI.clear];iex.not\u display\u result


这就是
clear/1
的基本原理。

我发现这是可能的,因为Windows 10中的本机终端支持ANSI颜色和转义序列。唯一的办法是在
iex
shell中启用它

根据需要,此选项是可配置的。作为快速解决方案,只需键入您的
iex
会话中的以下代码:

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

为了使其永久化,您可以在
~/.iex.exs
文件()中配置
iex
shell。只需将以下内容粘贴到文件中:


IEx.configure[colors:[enabled:true]]
将以下内容添加到主目录中的
~/.IEx.exs
——如果文件不存在,请创建并添加以下内容

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

编辑:请注意,在windows上的Elixir/Erlang emulator外壳中,您需要一个支持此功能的术语、ConEmu、Cmder等。

您确实会收到警告:“无法清除屏幕,因为此外壳上未启用ANSI转义码”@GavinBrelstaff也无法清除Elixir-werl吉他上的屏幕。在常规windows控制台上,我们使用CLS。链接答案建议使用ANSICON,我认为它比ConEmu更简单。仅供参考,ConEmu是终端/控制台的替代品,而不是外壳,以及windows控制台(conhost.exe)它部分替换的也不是shell。cmd.exe是shell,但它与呈现控制台窗口无关。与任何控制台程序一样,它获得连接的conhost.exe实例的句柄,以及控制台默认的
标准输入
标准输出
、和
标准错误
的标准句柄s输入缓冲区和屏幕缓冲区。@eryksun你说得对——我对什么是外壳和什么是终端/控制台不是很精确。我在ConEmu中使用
iex
,我仍然得到“ANSI转义码未启用”消息,尽管它们显然是(我有一个彩色iex提示)。我还得到“ANSI转义码未启用”控制台和GitBash中的消息。@jwfearn您是从Iex获得该消息的吗?Iex检查操作系统,因此使用Conemu没有任何区别。您可能希望在Elixir的github上提交一个问题,让他们知道Windows 10现在支持此功能。他们可能希望更改此行为。问题在于本机终端中的ANSI支持仅在特定的Windows 10更新中实现,我不确定默认情况下是否可以为所有Windows安装启用它。我认为,应该由用户在
iex
中启用ANSI。我刚刚检查了他们的github上的已解决问题。他们在master branch中已经有了此ANSI支持检测。