IEx-複数行のコマンドをキャンセルするにはどうすればよいですか?


84

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
これに対する解決策は、私はかなり迷惑な彼らがオプションに含ま願っているBREAK...現在複数行のコマンドをキャンセル、または最初にCTRL-Cはそれをキャンセルさせるためのメニューを
erandros

回答:


95

であなたのラインを開始します #iex:break

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

** (TokenMissingError) iex:1: incomplete expression

4
これは、ドキュメントの「IExでの
alxndr

そして、どのようにして長時間実行されているコマンドを中断してキャンセルするのでしょうか?
トーマスブラウン2016

ああ親愛なる..再びテキストエキスパンダーに手を伸ばす... smilesoftware.com/textexpanderはそれを短縮するものとします;iexb
arcseldon 2017年

63

通常、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)> 

0

私の迅速で汚い解決策は、スパムによって構文エラーを生成"""""""""することです(これはヒアドキュメントとして解釈されます)。

あなたの例では:

iex(3)> Enum.each '12345', &(IO.puts(&1"))
...(3)> end
...(3)> '
...(3)> end
...(3)> ""
...(3)> """"""""""""""""""""
** (SyntaxError) iex:8: heredoc allows only zero or more whitespace characters followed by a new line after """
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.