2014-12-21 10 views
50

Quando uso IEX e fare un errore di battitura come staffa supplementare o", quindi la maggior parte del tempo ricevo un errore di sintassi ma ci sono casi come questo:.IEx - Come annullare il comando multiline?

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 

non posso fare un errore di sintassi e continuare da zero e devo rilanciare intera iEX. esiste una scorciatoia da tastiera o il comando per saltare l'esecuzione di iex corrente (3) e passare alla successiva IEX (4)?

risposta

53

iniziare la linea con #iex:break

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

** (TokenMissingError) iex:1: incomplete expression 
+2

Questo è menzionato nella documentazione, nella sezione "Espressioni in IEX" (prima della documentazione funzioni comincia): http://elixir-lang.org/docs /v1.0/iex/IEx.html – alxndr

+16

Quanto intuitiva, questa sarebbe stata la mia prima ipotesi! – Alexander

+0

e come si interrompe un comando di marcia lunga e lo si annulla? –

36

In generale, è anche possibile premere Ctrl + G, che consente di passare alla modalità "Comando switch utente" con un prompt --->. Da qui, è possibile digitare i per interrompere la sessione IEx, quindi c per riconnettersi ad esso; IEx indicherà quindi ** (EXIT) interrupted e ritorna allo stato in cui si trovava immediatamente prima di rimanere bloccato. Questa è una caratteristica della shell di Erlang (erl) che è stata ereditata da IEx.

Esempio di questa in azione:

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)>