web-dev-qa-db-ja.com

IEx履歴を保存するにはどうすればよいですか?

IEx(ElixirのREPL)で、コマンド履歴を保存できるようにしたいと思います。

例えば:

新しいIExセッションを開いてコマンドを実行できます。コマンドを実行した後、上矢印を押して、最後のコマンドを事前に入力できます。 IExを閉じて再度開いた後、最後のコマンドにアクセスしたいと思います。

これを行う方法はありますか?

27
loeschg

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
45
loeschg

私はoh-my-zshを使用しているので、vim ~/.zshrc

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

次にsource ~/.zshrcそして今は常にロードされます。ありがとう@loeschg。

1
rld