12

是否可以在iex提示中添加颜色和其他效果?是否iex有资源文件(如.irbrcRuby 的irb)?是否有允许即时定制的定制 API(如 Ruby 的IRB.conf)?

4

1 回答 1

27

是的,是的,是的!

要自定义提示,您需要做几件事:

  • 主目录中的.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 上的控制台、 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 上更好地工作。]

于 2016-06-19T21:24:23.140 回答