IEx-как отменить многострочную команду?


когда я использую IEx и делаю опечатку, такую как дополнительная скобка или", то большую часть времени я получаю синтаксическую ошибку. Но есть такие случаи, как этот:

iex(3)> Enum.each '12345', &(IO.puts(&1"))    
...(3)> end   
...(3)> )   
...(3)> '    
...(3)> end    
...(3)> ""    
...(3)> ... ? How to produce syntax error ?    
...(3)>     
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded    
      (v)ersion (k)ill (D)b-tables (d)istribution   

Я не могу сделать синтаксическую ошибку и продолжить с нуля, и мне нужно перезапустить весь IEx. Есть ли какая-либо комбинация клавиш или команда, чтобы пропустить выполнение текущего iex(3) и перейти к следующему iex(4)?

2 56

2 ответа:

начните строку с #iex:break

iex(1)> Enum.each '12345', &(IO.puts(&1"))    
...(1)> ...
...(1)> #iex:break

** (TokenMissingError) iex:1: incomplete expression

В общем, вы также можете нажать Ctrl + G, который приведет вас в режим "команда переключения пользователя" с помощью ---> запрос. Отсюда, вы можете ввести i чтобы прервать сеанс IEx, затем c для повторного подключения к нему; IEx будет указывать ** (EXIT) interrupted и вернитесь в состояние, в котором он был непосредственно перед тем, как вы застряли. Это особенность оболочки Erlang (erl), которая была унаследована IEx.

пример этого в действии:

iex(3)> Enum.each '12345', &(IO.puts(&1"))
...(3)> end
...(3)> )
...(3)> '
...(3)> end
...(3)> ""
...(3)>        <-- Ctrl-G goes here (not shown normally)
User switch command
 --> i
 --> c
** (EXIT) interrupted
iex(3)>