#!/usr/bin/env zsh # hide EOL sign ('%') export PROMPT_EOL_MARK="" # Color definition GREEN="%F{047}" RED="%F{196}" ORANGE="%F{214}" BLUE="%F{027}" LBLUE="%F{075}" PURPLE="%F{105}" RESET="%f" git_prompt() { ref=$(command git symbolic-ref HEAD 2> /dev/null) || ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0 echo -n " $ORANGE${ref#refs/heads/}" if [ ! -z "$(git status --short)" ]; then echo "$RED+" fi } setopt promptsubst # enable command substitution in prompt # Primary Prompt [ "$EUID" -eq 0 ] && PS1="$RED%n$RESET" || PS1="$GREEN%n$RESET" # user@machine #PS1+=" $BLUE%~" # Working directory, no autotrim PS1+=" $BLUE%(5~|%-1~/…/%3~|%4~)" # Working directory + autotrim PS1+="\$(git_prompt)" PS1+=" $PURPLE%(!.#.»)$RESET " # Final symbol (# or ») # Next line prompt PS2="$RED\ $RESET" # Right side prompt (on error) RPS1="%(?..$RED%? ↵$RESET)"