IEx - Çok satırlı komut nasıl iptal edilir?


84

IEx kullandığımda ve ek parantez veya "gibi bir yazım hatası yaptığımda, çoğu zaman sözdizimi hatası alıyorum. Ancak bunun gibi durumlar var:

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   

Sözdizimi hatası yapıp sıfırdan devam edemiyorum ve tüm IEx'i yeniden başlatmam gerekiyor. Geçerli iex (3) gerçekleştirmeyi atlayıp sonraki iex (4) 'e gitmek için herhangi bir klavye kısayolu veya komutu var mı?


2
bunun çözümleri oldukça can sıkıcı, BREAKmenüye mevcut çok satırlı komutu iptal etmek veya ilk ctrl-c'yi iptal
ettirmek için bir seçenek eklemelerini diledim

Yanıtlar:


95

İle çizginize başlayın #iex:break

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

** (TokenMissingError) iex:1: incomplete expression

4
Bu, belgelerin "IEx'teki İfadeler" bölümünde (işlev belgeleri başlamadan önce) belirtilmiştir: elixir-lang.org/docs/v1.0/iex/IEx.html
alxndr

ve uzun süre çalışan bir komut nasıl kesilir ve iptal edilir?
Thomas Browne

Oh canım .. tekrar metin genişleticiye ulaşılıyor ... smilesoftware.com/textexpander bunu ;iexb
kısaltacak

63

Genel olarak, bir komut istemiyle sizi "Kullanıcı değiştirme komutu" moduna bırakacak olan Ctrl+ düğmesine de basabilirsiniz . Buradan, IEx oturumunuzu kesmek için yazabilir ve ardından yeniden bağlanabilirsiniz ; Daha sonra IEx, siz sıkışıp kalmadan hemen önce bulunduğu durumu belirtir ve geri döner. Bu, IEx tarafından miras alınan Erlang kabuğunun (erl) bir özelliğidir.G--->ic** (EXIT) interrupted

Bunun uygulama örneği:

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

Benim hızlı ve kirli çözümüm, spam göndererek bir sözdizimi hatası oluşturmaktır """""""""(bu, heredoc olarak yorumlanacaktır).

Örneğinizde:

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 """
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.