如何着色Elixir iex提示?

jwf*_*arn 6 elixir iex

是否可以在iex提示中添加颜色和其他效果?是否iex有(像一个资源文件.irbrc为Ruby的irb)?是否有允许快速定制的自定义API(如Ruby IRB.conf)?

jwf*_*arn 19

是的,是的,是的!

要自定义提示,您需要以下几项:

  • .iex.exs主目录中的文件.如果该文件不存在,请创建该文件.它将在iex启动时执行.
  • [可选]调用Application.put_env以启用ANSI.如果iex您的平台(例如,Windows 10)未检测到ANSI支持,则可能需要此选项.
  • 调用以IEx.configure启用颜色并设置提示.
  • ANSI转义码用于纠正光标位置.如果没有这个,使用向上/向下箭头循环显示命令历史记录会将光标移动到更远的位置.IO.ANSI当前没有公开所有光标移动代码,但原始代码适用于支持它们的终端.
  • IO.ANSI 格式化功能.
  • 提示文字.
  • IO.ANSI.reset 关闭任何剩余的格式.
  • 转换为字符串IO.chardata_to_string.

以下是适用于我的iex终端1.3.0和OS X 10.11.5上的iTerm2 3.0.3以及Windows 10上的Console,GitBashConEmu:

# ~/.iex.exs
Application.put_env(:elixir, :ansi_enabled, true)
IEx.configure(
  colors: [enabled: true],
  default_prompt: [
    "\e[G",    # ANSI CHA, move cursor to column 1
    :magenta,
    "%prefix", # IEx prompt variable
    ">",       # plain string
    :reset
  ] |> IO.ANSI.format |> IO.chardata_to_string
)
Run Code Online (Sandbox Code Playgroud)

此代码运行良好,但我的提示仅在第一次交互后生效:iex首次启动时,它会显示其内置提示.如果我点击返回,那么我的提示生效.如果有人知道如何解决这个问题,请分享.

[更新:修改为在Windows上更好地工作.]

  • 在Windows 10上,配置文件的位置是'%USERPROFILE%\.iex.exs` (3认同)