IEx-여러 줄 명령을 취소하는 방법은 무엇입니까?


82

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)로 이동하는 단축키 나 명령이 있습니까?


1
이에 대한 해결책은 내가 그들이에서 옵션 포함 바란 꽤 성가신 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
이것은 문서의 "Expressions in IEx"섹션 (함수 문서가 시작되기 전)에 언급되어 있습니다. elixir-lang.org/docs/v1.0/iex/IEx.html
alxndr

장기 실행 명령을 어떻게 중단하고 취소합니까?
Thomas Browne

오 이런 ... 다시 텍스트 확장기에 도달 ... smilesoftware.com/textexpander는 해당 축약된다;iexb
arcseldon

62

일반적으로 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

내 빠르고 더러운 해결책은 스팸으로 구문 오류를 생성하는 """""""""것입니다 (heredoc로 해석됩니다).

귀하의 예에서 :

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.