使用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
哈哈也許它只是需要更長的時間來打這個瘋狂的關鍵組合,所以我不太可能遇到問題;-) –