使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录。如何保存IEx历史记录?
例如:
我可以打开一个新的IEx会话并执行命令。执行命令后,我可以按向上箭头,并预先填入我的最后一个命令。关闭IEx并重新开放后,我想访问我的最后一条命令。
有没有办法做到这一点?
使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录。如何保存IEx历史记录?
例如:
我可以打开一个新的IEx会话并执行命令。执行命令后,我可以按向上箭头,并预先填入我的最后一个命令。关闭IEx并重新开放后,我想访问我的最后一条命令。
有没有办法做到这一点?
对于二郎山/ 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
只是尝试这样做了,似乎历史不会在某些情况下退出IEx标志时正确地写入击中'Ctrl' + 'C'两次,很多人都这么做。当我总是用'Ctrl' +'G'' Q''Enter'终止IEx时,我没有任何问题,无论如何这是一种更清洁的方式来退出IEx。 –
我注意到有时它与你退出的速度有关。可能是各种文件写入竞争条件? – loeschg
哈哈也许它只是需要更长的时间来打这个疯狂的关键组合,所以我不太可能遇到问题;-) –