È possibile aggiungere colore e altri effetti al prompt iex
? iex
ha un file di risorse (come .irbrc
per Ruby's irb
)? Esiste un'API di personalizzazione che consente la personalizzazione immediata (come Ruby's IRB.conf
)?Come colorare il prompt di Elixir iex?
6
A
risposta
16
Sì, sì e sì!
Per personalizzare il vostro messaggio, avrete bisogno di diverse cose:
- Un file
.iex.exs
nella vostra home directory. Crea questo file se non esiste. Verrà eseguito quando viene avviatoiex
. - [opzionale] Una chiamata a
Application.put_env
per abilitare ANSI. Potrebbe essere necessario seiex
sulla piattaforma (ad es. Windows 10) non rileva il supporto ANSI. - Una chiamata a
IEx.configure
per abilitare il colore e impostare il prompt. - ANSI escape codes per correggere la posizione del cursore. Senza questo, usare le frecce su/giù per scorrere la cronologia dei comandi sposta il cursore sempre più a destra.
IO.ANSI
non espone attualmente tutti i codici di movimento del cursore, ma i codici raw funzioneranno per i terminali che li supportano. IO.ANSI
funzioni di formattazione.- Testo prompt.
IO.ANSI.reset
per disattivare la formattazione rimanente.- Convertire in una stringa con
IO.chardata_to_string
.
Ecco ciò che funziona per me con iex
1.3.0 in Terminale e iTerm2 3.0.3 su OS X 10.11.5 e Console, GitBash, e ConEmu su Windows 10:
# ~/.iex.exs
Application.put_env(:elixir, :ansi_enabled, true)
IEx.configure(
colors: [enabled: true],
default_prompt: [
"\e[G", # ANSI CHA, move cursor to column 1
:magenta,
"%prefix", # IEx prompt variable
">", # plain string
:reset
] |> IO.ANSI.format |> IO.chardata_to_string
)
Questo codice funziona abbastanza bene , ma il mio prompt ha effetto solo dopo la prima interazione: quando si avvia per la prima volta iex
, viene visualizzato il prompt integrato. Se premo return, quindi il mio prompt diventa effettivo. Se qualcuno sa come risolverlo, per favore condividi.
[AGGIORNATO: modificato per funzionare meglio su Windows.]
colori IEx.configure: [eval_result: [: verde,: brillante]] # Mi chiedo perché è verde il giallo? – sheriffderek
@sheriffderek I nomi dei colori ANSI si associano agli indici in una tabella colori definita altrove (ad esempio, in un programma terminale). Molti programmi terminali supportano combinazioni di colori (ad esempio, https://github.com/lysyi3m/osx-terminal-themes) – jwfearn
su Windows 10 la posizione del file di configurazione è '% USERPROFILE% \. iex.exs' –