IEx(ElixirのREPL)で、コマンド履歴を保存できるようにしたいと思います。
例えば:
新しいIExセッションを開いてコマンドを実行できます。コマンドを実行した後、上矢印を押して、最後のコマンドを事前に入力できます。 IExを閉じて再度開いた後、最後のコマンドにアクセスしたいと思います。
これを行う方法はありますか?
Erlang/OTP 20の場合
これは組み込みです(- https://hexdocs.pm/iex/IEx.html#module-Shell-history から)
Erlang/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"
注:@ andrei-suraは、MacOSでは最初に> touch ~/.iex_history
が必要になる可能性があると述べました
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
私はoh-my-zshを使用しているので、vim ~/.zshrc
:
# Enable history in IEX through Erlang(OTP)
export ERL_AFLAGS="-kernel Shell_history enabled"
次にsource ~/.zshrc
そして今は常にロードされます。ありがとう@loeschg。