Risposte:
Ecco un esempio di come impostare un prompt rosso:
PS1=$'\e[0;31m$ \e[0m'
La magia è \e[0;31m
(accendi il rosso in primo piano) e\e[0m
(disattiva gli attributi del personaggio). Queste sono chiamate sequenze di escape. Diverse sequenze di escape offrono risultati diversi, dal posizionamento assoluto del cursore, al colore, alla possibilità di modificare la barra del titolo della finestra e così via.
Per ulteriori informazioni sulle sequenze di escape, vedere la voce di wikipedia sui codici di escape ANSI
Metti questo in ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Colori supportati:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, e white
(da questa risposta ), anche se diversi computer possono avere diverse opzioni valide.
Racchiudi i codici colore (e qualsiasi altro carattere non stampabile) con %{....%}
. Questo è perché la disposizione del testo funzioni correttamente.
Inoltre, ecco come puoi farlo funzionare con il taglio della directory da qui .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
mezzi che il contenuto sarà interpretato come una sequenza di escape costante, in modo che il cursore wont sposta durante la stampa della sequenza. Se non lo usi, i codici colore possono effettivamente spostare il cursore e produrre effetti indesiderati. Ciò è documentato nella Visual Effects
sezione della pagina man di zshmisc
Zsh viene fornito con prompt colorati incorporati. Provare
autoload -U promptinit && promptinit
e quindi prompt -l
elenca i prompt disponibili,-p fire
anteprima del prompt "fire", lo -s fire
imposta.
Quando sei pronto per aggiungere un prompt, aggiungi qualcosa di simile sotto la riga di caricamento automatico sopra:
prompt fade red
Non penso che autoload -U colors && colors
sia più necessario e si può semplicemente fare:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
per ottenere lo stesso risultato della risposta di FireDude . Consulta la documentazione ZSH per maggiori informazioni.
autoload -U colors && colors
autoload
.
autoload on
?
autoload -U colors
, significa che la tua distribuzione lo ha già in qualche altro file di inizializzazione zsh. Dovresti comunque includerlo negli script che intendi condividere con altri.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(Da 1 a 256)$FG[018]
(Da 1 a 256)$fg[magenta]
(magenta, rosso, bianco, giallo, nero, blu, ciano, verde)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
È necessario aggiungere la definizione delle variabili (PS1 / PROMPT) ~/.zshrc
Possiamo anche ridefinire la variabile PS1 nel prompt corrente per testarla subito (le modifiche non vengono salvate).
La risposta di Bryan Oakley sopra ha un glitch come è già stato sottolineato e la soluzione offerta da Andrew Marshall seppur non porta il glitch, tuttavia non rende evidente l'eccessiva personalizzazione sui colori utilizzati.
Dato che macOS Catalina chiede che zsh sia la shell predefinita d'ora in poi, penso che molte altre persone potrebbero voler personalizzare il loro prompt e potrebbero venire qui per una risposta. Quindi, ho pensato di provare a fornire un riepilogo più ampio e toccare altre nozioni strettamente correlate che consentono una maggiore personalizzazione.
Codici a 3 cifre per vari colori. Prima di tutto, qui possiamo trovare codici a 3 cifre per vari colori: https://unix.stackexchange.com/a/124409/194343 . Ad esempio, 214 è una sorta di colore arancione.
Primo piano e sfondo. Le altre informazioni chiave è che per F oreground e BAC K colori di fondo si può definire quello che vogliono con F e K , rispettivamente. La fonte è il manuale zsh sugli effetti visivi: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Quindi, ad esempio, i seguenti due comandi
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
presentare il nome host in arancione con sfondo nero, seguito da due punti in bianco con sfondo nero, seguito dalla directory di lavoro corrente in blu brillante con sfondo nero, seguito dal simbolo del dollaro in bianco su sfondo nero.
Di seguito sono disponibili ulteriori informazioni correlate.
Informazioni rapide sul lato destro. Ad esempio, l'aggiunta di un timestamp. Vedi https://superuser.com/a/1251045/290299 . Naturalmente, questo può essere codificato a colori, ad esempio con un colore azzurro / viola, come questo:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Colori per ls
. Dopo aver letto il manuale per ls, uno ad esempio può attivare i colori per ls
utilizzare i seguenti due comandi:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Infine, come ultima osservazione che non ho testato poiché sono soddisfatto della mia configurazione, un'altra strada potrebbe essere che qualcuno installi la porta coreutils
da MacPorts e quindi la utilizzi gdircolors
(fonte: https://unix.stackexchange.com/a/174596 / 194343 ). (Potrei modificare quest'ultima parte in futuro poiché tutti i precedenti sono pezzi correlati che rendono la vita di tutti i giorni molto più divertente e più facile da affrontare.)
Ho scoperto che, con zsh5 (quello predefinito su Debian Jessie), tutte queste soluzioni funzionano:
$'\e[00m
$fg[white]
$fg{white}
Ora, hanno un problema: sposteranno il cursore, risultando in una brutta decalcomania durante la tabulazione (per il completamento automatico). La soluzione è semplicemente circondare le sequenze di fuga con %{FOOBAR%}
. Mi ci è voluto un po 'per capirlo. Per la 2a e 3a soluzione il colors
modulo di caricamento è obbligatorio. Per mantenere leggibile la prima soluzione, è sufficiente definire le variabili per i colori utilizzati.
Per ottenere un prompt con il colore a seconda dello stato di uscita dell'ultimo comando, puoi usare questo:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Aggiungi questa riga al tuo file ~/.zshrc
.
La documentazione elenca i possibili segnaposto.
Prova il mio preferito: inserire
~/.zshrc
questa linea:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
non dimenticare
source ~/.zshrc
per testare le modifiche
puoi cambiare i colori / codici colore, ovviamente :-)
man zshall e cerca PROMPT EXPANSION
Dopo aver letto le risposte esistenti qui, molte di esse sono in conflitto. Ho provato i vari approcci su sistemi che eseguono zsh 4.2 e 5+ e ho scoperto che il motivo per cui queste risposte sono in conflitto è che non dicono a quale versione di ZSH sono destinate. Versioni diverse utilizzano una sintassi diversa per questo e alcune di esse richiedono vari caricamenti automatici.
Quindi, la scommessa migliore è probabilmente man zshall e cercare PROMPT EXPANSION per scoprire tutte le regole per la tua particolare installazione di zsh. Nota nei commenti, cose come "Uso Ubuntu 11.04 o 10.4 o OSX" non sono molto significative in quanto non è chiaro quale versione di ZSH stai utilizzando. Ubuntu 11.04 non implica una versione più recente di ZSH rispetto a ubuntu 10.04. Ci possono essere diversi motivi per cui è stata installata una versione precedente. Del resto una versione più recente di ZSH non implica quale sintassi utilizzare senza sapere quale versione di ZSH sia.
Per completare tutte le risposte precedenti, un altro trucco utile consiste nel posizionare le impostazioni del prompt colorato in una funzione zsh. Qui puoi definire variabili locali per alias comandi più lunghi, ad esempio rc=$reset_color
o definire le tue variabili di colore. Non dimenticare di inserirlo nel tuo .zshrc
file e di chiamare la funzione che hai definito:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt