是否可以在iex
提示中添加颜色和其他效果?是否iex
有资源文件(如.irbrc
Ruby 的irb
)?是否有允许即时定制的定制 API(如 Ruby 的IRB.conf
)?
问问题
3159 次
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 上的控制台、 GitBash和ConEmu :
# ~/.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 回答