Как сохранить историю IEx?

С IEx (Elixir REPL) я хотел бы сохранить историю команд.

Например:

Я могу открыть новый сеанс IEx и выполнить команду. После выполнения команды я могу нажать стрелку вверх и предварительно заполнить мою последнюю команду. После закрытия IEx и повторного открытия я хотел бы иметь доступ к моим последним командам.

Есть ли способ сделать это?

Ответ 1

Для Erlang/OTP 20

Это встроенный (от https://hexdocs.pm/iex/IEx.html#module-shell-history)

Из Erlang/OTP 20 можно получить историю оболочек, пройдя некоторые флаги, которые активируют его в виртуальной машине. Это можно сделать по необходимости при запуске 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"

Примечание: @andrei-sura упомянул, что вам может понадобиться сначала > touch ~/.iex_history на MacOS


Для 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

Ответ 2

Я использую oh-my-zsh, поэтому я надел vim ~/.zshrc:

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

и теперь всегда загружаются. Спасибо @loeschg.