web-dev-qa-db-ja.com

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)に進むキーボードショートカットまたはコマンドはありますか?

69
4d2025

#iex:breakで行を開始します

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

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

一般的に、押すこともできます Ctrl + G、_--->_プロンプトで「ユーザー切り替えコマンド」モードにドロップします。ここから、iと入力してIExセッションを中断し、cと入力して再接続できます。 IExは** (EXIT) interruptedを表示し、スタックする直前の状態に戻ります。これは、IExによって継承されたErlangのシェル(erl)の機能です。

動作中のこの例:

_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