2015-06-17 11 views
5

Si prega di come possiamo cancellare lo schermo in Iex su WindowsCome possiamo cancellare lo schermo in Iex su Windows

metodo documentato nel Iex aiuto non funziona:

  • clear/0 - cancella lo schermo

This StackOverflow Answer inoltre non funziona in Windows.

+1

All'interno del guscio emulatore Elixir/Erlang sulle finestre si vuole ricevere l'avviso: "" Impossibile cancellare lo schermo, perché i codici di escape ANSI non sono attivati ​​su questo guscio "" – GavinBrelstaff

+0

@ GavinBrelstaff non è in grado di cancellare lo schermo sull'Elixir -werl GUI –

+0

@CharlesOkwuagwu, puoi farmi sapere se la mia risposta è qui sotto (http://stackoverflow.com/questions/30899247/how-can-we-clear-the-screen- in-iex-on-windows/38030425 # 38030425) ha funzionato per te? – jwfearn

risposta

5

Ho scoperto che è possibile, perché il terminale nativo in Windows 10 supporta i colori ANSI e le sequenze di escape. L'unica cosa è abilitare questo nella shell iex.

Secondo https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/io/ansi.ex#L41 questa opzione è configurabile.Come una soluzione rapida basta digitare nel vostro iex sessione seguente codice:

Application.put_env(:elixir, :ansi_enabled, true)

Al fine di renderla permanente, è possibile configurare iex scocca in ~/.iex.exs del file (https://hexdocs.pm/iex/IEx.html#module-configuring-the-shell). Basta incollare seguente nel file:

IEx.configure [colors: [enabled: true]]

+1

Si consiglia di inviare un problema sul github di Elixir per renderli consapevoli che questo è ora supportato in Windows 10. Potrebbero voler modificare il comportamento. –

+0

Il problema è che il supporto ANSI nel terminale nativo è implementato solo in specifici aggiornamenti di Windows 10, e non sono sicuro che sia ok per abilitarlo di default per tutte le installazioni di Windows. Penso che dovrebbe essere compito dell'utente abilitare ANSI in 'iex' – ajukraine

+0

Ho appena controllato i problemi chiusi sul loro github. Hanno già questo rilevamento del supporto ANSI nel ramo principale. – ajukraine

3

Sì, non è possibile cancellarlo su Windows per quanto ne so. Se esiste una sola uscita che possiamo inviare all'IO Device per cancellare gli schermi su Windows, mi piacerebbe sapere e aggiungere questa funzionalità anche a Windows. :)

+0

c'è, su una normale console di Windows usiamo CLS –

+2

cls è un comando di shell. Iex non è una shell di Windows. –

3

L'opzione migliore (se questo è un vero problema per voi piuttosto che un fastidio) è utilizzare una shell Windows alternativa che supporti ANSI Sequenze di escape. Vedere this S O question per il motivo per cui non è possibile utilizzare semplicemente sequenze ANSI Escape in una shell Cmd di Windows. Un'alternativa di shell di comando che supporta ANSI è ConEmu. La configurazione di ConEmu sulla macchina è lasciata come esercizio per il lettore.

+2

La risposta collegata suggerisce l'uso di ANSICON, che a mio avviso sarebbe più semplice di ConEmu. Cordiali saluti, ConEmu è una sostituzione di terminale/console, non una shell, e la console di windows (conhost.exe) che sostituisce parzialmente non è una shell. cmd.exe è una shell, ma non ha nulla a che fare con il rendering della finestra della console. Come ogni programma di console, ottiene un handle per l'istanza conhost.exe collegata, e i suoi handle standard per 'StandardInput',' StandardOutput' e 'StandardError' sono predefiniti al buffer di input e al buffer dello schermo della console. – eryksun

+0

@eryksun Hai ragione - non sono molto preciso in termini di cosa sia una shell e cosa sia un terminale/console. –

+0

Uso 'iex' in ConEmu e ottengo ancora il messaggio" ANSI escape codes non enabled "anche se sono chiaramente (ho un prompt color iex.) – jwfearn

3

È possibile utilizzare i codici ANSI direttamente in iex su Windows con le console che li supportano

Questo cancellerà lo schermo in iex (come ConEmu o Windows 10 console.):

iex> IO.write "\e[H\e[J"; IEx.dont_display_result 

Spiegazione:

  • IO.write uscite alla console senza una nuova riga
  • \e[ è il prefisso per ANSI CSI codes
  • H è il CSI CUP - posizione del cursore codice senza argomenti, dalle mosse di default del cursore per riga 1, colonna 1
  • J è il CSI ED - cancellare il codice di visualizzazione con argomenti, per default cancella lo schermo dalla posizione del cursore
  • IEx.dont_display_result impedisce il risultato :ok di IO.write dalla visualizzazione dopo lo schermo viene cancellata

È possibile anche cancellare lo schermo utilizzando IO.ANSI piuttosto che i codici di escape prime:

iex> IO.write [IO.ANSI.home, IO.ANSI.clear]; IEx.dont_display_result

Questo è fondamentalmente il modo clear/1 è implemented.

Problemi correlati