Please how can we clear the screen in Iex
on Windows
Documented method in Iex help does not work:
clear/0
— clears the screen
This StackOverflow Answer also does not work in Windows.
Please how can we clear the screen in Iex
on Windows
Documented method in Iex help does not work:
clear/0
— clears the screenThis StackOverflow Answer also does not work in Windows.
Your best option (if this is a real problem for you rather than an annoyance) is to use an alternate Windows shell that supports ANSI Escape Sequences. See this S O question for why you can't simply use ANSI Escape sequences in a Windows Cmd Shell. One command shell alternative that does support ANSI is ConEmu. Configuring ConEmu on your machine is left as an exercise for the reader.
Yes, we can't clear it on Windows as far as I know. If there is one escape that we can output to the IO device to clear screens on Windows, I would love to know and add this functionality to Windows too. :)
Add the following to ~/.iex.exs
in your home directory -- If the file doesn't exist, create it and add the following.
Application.put_env(:elixir, :ansi_enabled, true)
Edit: Note that you'll need a term that supports this, ConEmu, Cmder, etc..
You can use ANSI codes directly in iex
on Windows with consoles that support them (like ConEmu or Windows 10 console.)
This will clear the screen in iex
:
iex> IO.write "\e[H\e[J"; IEx.dont_display_result
Explanation:
IO.write
outputs to the console without a newline\e[
is the prefix for ANSI CSI codesH
is the CSI CUP – Cursor Position code with no arguments, by default moves cursor to row 1, column 1J
is the CSI ED – Erase Display code with no arguments, by default clears the screen from the current cursor positionIEx.dont_display_result
prevents the :ok
result of IO.write
from displaying after the screen is clearedYou can also clear the screen using IO.ANSI
rather than raw escape codes:
iex> IO.write [IO.ANSI.home, IO.ANSI.clear]; IEx.dont_display_result
This is basically how clear/1
is implemented.
I've discovered it's possible, because native terminal in Windows 10 supports ANSI colors and escape sequences. The only thing is to enabled this in
iex
shell.According to https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/io/ansi.ex#L41 this option is configurable. As a quick solution just type in your
iex
session following code:Application.put_env(:elixir, :ansi_enabled, true)
In order to make it permanent, you can configure
iex
shell in~/.iex.exs
file (https://hexdocs.pm/iex/IEx.html#module-configuring-the-shell). Just paste following into the file:IEx.configure [colors: [enabled: true]]