Customizing Mac OS X Shell
August 22, 2012
I’ve been customizing my Mac OS X shell a bit today. The cyan above is for the current directory and the purple shows the current git branch, which is why it appears when I change directory to a git repository.
##FIRST: oh-my-zsh I used oh-my-zsh to start, but I didn’t like any of the included themes.
##NEXT: thoughtbot/dotfiles The thoughtbot guys have put together a nice zsh dotfiles setup. They include a handy little script that symlinks from the dotfiles directory to your .* files themselves, making it easy to link up your dotfiles to a github repository for sharing and copying to additional computers.
##CUSTOMIZING My contribution to all this? I extracted the code the thoughtbot guys used to generate their prompt and made a zsh-theme file out of it:
oh-my-zsh/themes/thoughtbot.zsh-theme:
# adds the current branch name in green
git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null)
if [[ -n $ref ]]; then
echo "[%{$fg_bold[magenta]%}${ref#refs/heads/}%{$reset_color%}]"
fi
}
# expand functions in the prompt
setopt prompt_subst
# prompt
export PROMPT='$(git_prompt_info)[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%1~%{$reset_color%}] '
local return_status="%{$fg[red]%}%(?..✘)%{$reset_color%}"
RPROMPT='${return_status}%{$reset_color%}'
I added an idea from Steve Losh and from Aaron Malone. By the way, I really like those themes as well. I recommend Aaron’s version just because it’s a little more robust.
What theme am I using in the screenshot? Tomorrow Night Eighties from Chris Kempson’s Tomorrow Night Eighties for iTerm2. I’m also using the Tomorrow Theme to highlight the code above.
##My Files You can check out my dotfiles and customized oh-my-zsh on my github.
Feedback and suggestions welcome.