2017-07-30 150 views
6

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

例如:

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

有没有办法做到这一点?

回答

16

对于二郎山/ OTP 20

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

从二郎山/ OTP 20,可以通过传递 一些标志,使得到外壳历史它在VM中。这可以在每个需要 基础上开始IEx标志时做到:

iex --erl "-kernel shell_history enabled"

如果你宁愿您的系统作为一个整体上启用 它,你可以使用ERL_AFLAGS环境 变量,并确保它会根据您的 终端/外壳配置进行相应设置。

在Linux [和MacOS]:

export ERL_AFLAGS="-kernel shell_history enabled"

在Windows上:

set ERL_AFLAGS "-kernel shell_history enabled"

注:@安德烈 - 苏拉提到你可能需要先> touch ~/.iex_history在MacOS


对于二郎山/ 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 
+8

只是尝试这样做了,似乎历史不会在某些情况下退出IEx标志时正确地写入击中'Ctrl' + 'C'两次,很多人都这么做。当我总是用'Ctrl' +'G'' Q''Enter'终止IEx时,我没有任何问题,无论如何这是一种更清洁的方式来退出IEx。 –

+0

我注意到有时它与你退出的速度有关。可能是各种文件写入竞争条件? – loeschg

+0

哈哈也许它只是需要更长的时间来打这个疯狂的关键组合,所以我不太可能遇到问题;-) –