My Extravagant Zsh Prompt
stevelosh.com
stevelosh.com
~$
I only show the username and hostname in my prompt if remote or unusual: [ -n "$SSH_CONNECTION" ] || [ "$USER" != "josh" ]. If either of those, I prefix my prompt with "user@host:". Apart from that, I show the exit status of the last command run, if non-zero. In general, I try to hide all boring information and show useful information only.[1] http://gr.ayre.st/s/screenshots/git/git_working.png [2] https://github.com/mattfoster/zshkit
function prompt_grayrest_setup {
unset PS1 PS2 PS3 PS4 PROMPT RPROMPT
autoload colors zsh/terminfo
if [[ "$terminfo[colors]" -ge 8 ]]; then
colors
fi
# Colours accepted as arguments
local u_col=${1:-'green'}
local h_col=${2:-'blue'}
local d_col=${3:-'yellow'}
local d_col_pre='blue'
local job_color='yellow'
local n_tru=${4:-'blue'}
local n_fal=${5:-'yellow'}
# looks like: ee1mpf@eepc-tsar16 ~ $
ps1=(
# "%{$fg_bold[$u_col]%}%n@"
# "%{$fg_bold[$h_col]%}%m "
"%1(j.%{$fg_bold[$job_color]%}.)"
"%4(j.%{$reset_color$fg[$job_color]%}[%{$reset_color$fg_bold[$job_color]%}%j%{$reset_color$fg[$job_color]%}] .%3(j.||| .%2(j.|| .%1(j.| .))))"
"%{$reset_color%}"
"%{%(?.$fg[$n_tru].$fg[$n_fal])%}$ "
"%{$reset_color%}"
)
ps2=(
"%_ %{$fg[$d_col]%}-> "
"%{$reset_color%}"
)
rps1=(
'%{$fg[$b_col]%}${vcs_info_msg_0_}%{$reset_color%}'
" %{$fg[$d_col]%}%(4~.%{$fg[$d_col_pre]%}%-1~%{$fg[$d_col]%} %2~.%3~) %{$reset_color%}"
)
PS2="${(j::)ps2}"
PS1="${(j::)ps1}"
RPS1="${(j::)rps1}"
}I used to pull in mattfoster's stuff, but I got complacent and fell out of it.
The current git branch makes sense, as does the current directory, but I'm having a hard time finding the point in anything else cluttering my shell window.
➜ civ5replays git:(master) ✗
Looks like that now, the X means uncommited changes. civ5replays being the folder, the rest being... the rest!
If you exit `top` by pressing q, it exits with non-zero - who knew? :)
[1]: http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/