2017-07-30 324 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

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