Elixir IEx-如何取消多行命令?

Elixir IEx-如何取消多行命令?,elixir,Elixir,当我使用IEx并输入一个类似于附加括号或“”的拼写错误时,大多数时候我都会遇到语法错误。但也有类似的情况: iex(3)> Enum.each '12345', &(IO.puts(&1")) ...(3)> end ...(3)> ) ...(3)> ' ...(3)> end ...(3)> "" ...(3)> ... ? How to produce syntax error ?

当我使用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)?

#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将声明
**(退出)中断
,并返回到卡住之前的状态。这是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)> 
iex(3)>Enum.each'12345'、&(IO.put(&1”))
…(3)>结束
...(3)> )
...(3)> '
…(3)>结束
...(3)> ""
…(3)>我
-->c
**(退出)中断
iex(3)>

我的快速而肮脏的解决方案是通过滥发
”(将被解释为herdeoc)来产生语法错误

在您的示例中:

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

文档“IEx中的表达式”一节(函数文档开始之前)中提到了这一点:那么如何中断一个长时间运行的命令并取消它呢?哦,天哪。再次使用文本扩展器…应将其缩写为
;iexb
解决方案非常烦人,我希望他们在
中断
菜单中包含一个选项来取消当前的多行命令,或使第一个ctrl-c取消它。。。