如何保存IEx历史记录?

时间:2017-07-30 21:54:54

标签: elixir iex

使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录。

例如:

我可以打开一个新的IEx会话并执行命令。执行命令后,我可以按向上箭头并预先填充我的最后一个命令。关闭IEx并重新打开后,我想访问我的上一个命令。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:44)

适用于Erlang / OTP 20

这是内置的(来自https://hexdocs.pm/iex/IEx.html#module-shell-history

  

从Erlang / OTP 20开始,可以通过传递来获取shell历史记录   一些在VM中启用它的标志。这可以根据需要完成   启动IEx的基础:

     

iex --erl "-kernel shell_history enabled"

     

如果您愿意启用   它作为一个整体在您的系统上,您可以使用ERL_AFLAGS环境   变量并确保它相应地设置在你的   终端/ shell配置。

     

在Linux [和macOS]上:

     

export ERL_AFLAGS="-kernel shell_history enabled"

     

在Windows上:

     

set ERL_AFLAGS "-kernel shell_history enabled"

注意:@ andrei-sura提到您可能需要先在MacOS上> touch ~/.iex_history

适用于Erlang / OTP 19及以下

尝试使用https://github.com/ferd/erlang-history

> git clone https://github.com/ferd/erlang-history.git
> cd erlang-history
> sudo make install    # may not need sudo depending on installation

答案 1 :(得分:0)

我正在使用oh-my-zsh,所以我戴上了vim ~/.zshrc

# Enable history in IEX through Erlang(OTP)
export ERL_AFLAGS="-kernel shell_history enabled"

然后source ~/.zshrc,现在始终加载。谢谢@loeschg。

答案 2 :(得分:0)

我不知道事情是否在某个时候发生了变化,但我发现上述方法不起作用。查看 iex 的手册页后,我注意到它需要

export ELIXIR_ERL_OPTIONS="-kernel shell_history enabled"

(注意额外的 ELIXIR)。也许最初的解决方案是有说服力的与 erl 相关(我发现它适用于那个),但是 iex 添加了限定符?由于最初的问题针对iex的,因此认为应该更新。