如何在Windows上清除Iex中的屏幕
请告诉我们如何在Windows上的如何在Windows上清除Iex中的屏幕,windows,elixir,Windows,Elixir,请告诉我们如何在Windows上的Iex中清除屏幕 Iex帮助中记录的方法不起作用: 清除/0-清除屏幕 在Windows中也不起作用。是的,据我所知,我们无法在Windows上清除它。如果有一个逃逸,我们可以输出到IO设备以清除Windows上的屏幕,我很想知道并将此功能添加到Windows中。:) 您最好的选择(如果这对您来说是一个真正的问题而不是麻烦)是使用支持ANSI转义序列的备用Windows shell。请参阅,了解为什么不能在Windows Cmd Shell中简单地使用ANS
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
说明:
- 不带换行符的控制台输出
是ANSI的前缀\e[
是无参数的CSI CUP–光标位置代码,默认情况下将光标移动到第1行第1列H
是无参数的CSI ED–擦除显示代码,默认情况下从当前光标位置清除屏幕J
防止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支持检测。