如何着色Elixir iex提示?

时间:2016-06-19 21:24:23

标签: elixir iex

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

1 个答案:

答案 0 :(得分:18)

是的,是的,是的!

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

  • 主目录中的.iex.exs文件。如果该文件不存在,请创建该文件。它将在iex启动时执行。
  • [可选] 调用Application.put_env启用ANSI。如果您平台上的iex(例如,Windows 10)未检测到ANSI支持,则可能需要此操作。
  • 致电IEx.configure以启用颜色并设置提示。
  • ANSI escape codes更正光标位置。如果没有这个,使用向上/向下箭头循环显示命令历史记录会将光标移动到更远的位置。 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中控制台,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
)

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

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