Mac OS X Setup Guide

Zsh

We'll install zsh for all the features offered by oh-my-zsh. The installation and usage is really intutive. The env.sh is a config file we maintain so as to not pollute the ~/.zshrc too much. env.sh holds aliases, exports, path changes etc.

Zsh

Install zsh and zsh completions using homebrew

    brew install zsh zsh-completions

Now you can customize your shell using two frameworks Prezto or Oh My Zsh. So follow one of the two sections below.

Prezto

Install prezto on top of zsh to get additional functionality

    git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

Next create the ~/.zshrc file by running

    setopt EXTENDED_GLOB
    for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
      ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
    done

edit the ~/.zpreztorc file and add

    zstyle ':prezto:load' pmodule \
      'environment' \
      'terminal' \
      'editor' \
      'history' \
      'directory' \
      'spectrum' \
      'utility' \
      'completion' \
      'git' \
      'syntax-highlighting' \
      'history-substring-search' \
      'prompt'

    zstyle ':prezto:module:prompt' theme 'paradox'

edit the .zshrc by opening the file in a text editor and adding the following below

    # Add env.sh
    source ~/Projects/config/env.sh

Oh My Zsh

Install oh-my-zsh on top of zsh to get additional functionality

    curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

if you're still in the default shell, change default shell to zsh manually

chsh -s /usr/local/bin/zsh

edit the .zshrc by opening the file in a text editor

    ZSH_THEME=pygmalion

    plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting)

    # Add env.sh
    source ~/Projects/config/env.sh

env.sh

    #!/bin/zsh

    # PATH
    export PATH="/usr/local/share/python:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    export EDITOR='subl -w'
    # export PYTHONPATH=$PYTHONPATH
    # export MANPATH="/usr/local/man:$MANPATH"

    # Virtual Environment
    export WORKON_HOME=$HOME/.virtualenvs
    export PROJECT_HOME=$HOME/Projects
    source /usr/local/bin/virtualenvwrapper.sh

    # Owner
    export USER_NAME="YOUR NAME"
    eval "$(rbenv init -)"

    # FileSearch
    function f() { find . -iname "*$1*" ${@:2} }
    function r() { grep "$1" ${@:2} -R . }

    #mkdir and cd
    function mkcd() { mkdir -p "$@" && cd "$_"; }

    # Aliases
    alias cppcompile='c++ -std=c++11 -stdlib=libc++'

    # Use sublimetext for editing config files
    alias zshconfig="subl ~/.zshrc"
    alias envconfig="subl ~/Projects/config/env.sh"