diff --git a/guide/english/elixir/iex/index.md b/guide/english/elixir/iex/index.md index ed76fc965b..64552e2112 100644 --- a/guide/english/elixir/iex/index.md +++ b/guide/english/elixir/iex/index.md @@ -1,13 +1,85 @@ --- -title: IEX +title: IEx --- -## IEX (Interactive Mode) +## IEx (Interactive Elixir Mode) -This is a stub. Help our community expand it. +`iex` is *interactive Elixir*. It is a command-line interface to Elixir or your Elixir application. -This quick style guide will help ensure your pull request gets accepted. +`iex` is [REPL][REPL] that allows you to evaluate any statement with immediate feedback. There's no need for compiling any code or putting your code into a script file. - +### Getting started + +With Elixir installed, you should be able to simply run `iex` from your shell and find something like the following: + +```shell +$ iex + +Erlang/OTP 21 [erts-10.1.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe] [dtrace] + +Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help) +iex(1)> +``` + +Now you can evaluate any valid Elixir statement followed by pressing ENTER and the result will be displayed on the next line. + +```shell +iex(1) 1 + 1 +2 +``` + +### Tab completion + +`iex` features tab completion. Aside from saving keystrokes, it allows you to see which functions and submodules are available. + +For example, type DaTAB. It should expand to `Date`. Now press TAB again and you'll see two options: `Date` and `DateTime` as both modules start with `Date`. + +Now let's say you want to use a function in the `Date` module but can't remember the name or arity. Type a . after the module name, press TAB and you'll see all available functions in the module. + +```shell +iex(3)> Date. +Range add/2 compare/2 +convert!/2 convert/2 day_of_week/1 +days_in_month/1 diff/2 from_erl!/1 +from_erl!/2 from_erl/1 from_erl/2 +from_iso8601!/1 from_iso8601!/2 from_iso8601/1 +from_iso8601/2 leap_year?/1 months_in_year/1 +new/3 new/4 range/2 +to_erl/1 to_iso8601/1 to_iso8601/2 +to_string/1 utc_today/0 utc_today/1 +``` + +You'll notice that `Range` at the top of the list. This is a submodule of `Date`. You can continue tab completion with submodules or functions. + +### Exiting + +To exit `iex`, press CTRL+C to bring up the break menu. You can press a, ENTER or just press CTRL+C a second time to exit. + +### Cancelling statement evaluation + +If you're writing a complex statement and make a mistake, you may be tempted to press CTRL+C to cancel statement evaluation as you would in a standard shell. Unfortunately that won't work in `iex` as it just brings up the break menu. + +`iex` allows a magic comment of `#iex:break` to be typed any time, followed by ENTER to abort statement evaluation. + +Let's take this example where you are constructing a map and forgot a quote partway through. You pressed enter to evaluate and get stuck at a statement continuation prompt and you want to abort. Just type `#iex:break` followed by ENTER: + +```shell +iex(1)> %{ user: "tom, roles: ["admin", "manager"] } +...(1)> #iex:break +** (TokenMissingError) iex:1: incomplete expression + +iex(1)> +``` + +### Loading your Mix application + +`iex` can load a script during startup. A common use for this is loading your `mix.exs` script so that your `iex` session contains your whole application and its dependencies loaded and ready to work with. + +```shell +$ iex -S mix +``` #### More Information: - + +* [Official Elixir Documentation](https://elixir-lang.org/getting-started/introduction.html#interactive-mode) + +[REPL]: https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop