web-dev-qa-db-fra.com

IEx - Comment annuler une commande multiligne?

Lorsque j'utilise IEx et que je fais une faute de frappe comme un support supplémentaire ou ", la plupart du temps, j'obtiens une erreur de syntaxe. Mais il y a des cas comme celui-ci:

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   

Je ne peux pas faire d'erreur de syntaxe et continuer à partir de zéro et je dois relancer l'intégralité de IEx. Existe-t-il un raccourci clavier ou une commande pour ignorer l'exécution de iex (3) actuel et passer à iex (4) suivant?

69
4d2025

Commencez votre ligne avec #iex:break

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

** (TokenMissingError) iex:1: incomplete expression
78
sasajuric

En général, vous pouvez également appuyer sur Ctrl + G, qui vous fera passer en mode "Commande de changement d'utilisateur" avec une invite --->. De là, vous pouvez taper i pour interrompre votre session IEx, puis c pour vous reconnecter; IEx indiquera alors ** (EXIT) interrupted et reviendra à l'état dans lequel il se trouvait juste avant que vous ne soyez bloqué. Il s'agit d'une fonctionnalité du shell d'Erlang (erl) héritée par IEx.

Exemple de ceci en action:

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