# -------------------------------------
# 環境変数
# -------------------------------------
# SSHで接続した先で日本語が使えるようにする
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# エディタ
export EDITOR=vim
# ページャ
export PAGER=/usr/local/bin/vimpager
export MANPAGER=/usr/local/bin/vimpager
# homebrew cask
export HOMEBREW_CASK_OPTS="--appdir=/Applications"
# rbenv
export PATH=~/.rbenv/shims:$PATH
eval "$(rbenv init - zsh)"
# nodebrew
export PATH=~/.nodebrew/current/bin:$PATH
# -------------------------------------
# zshのオプション
# -------------------------------------
## 補完機能の強化
autoload -U compinit
compinit
# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
# 日本語ファイル名を表示可能にする
setopt print_eight_bit
# 入力しているコマンド名が間違っている場合にもしかして:を出す。
setopt correct
# ビープを鳴らさない
setopt no_beep
# フローコントロールを無効にする
setopt no_flow_control
# '#' 以降をコメントとして扱う
setopt interactive_comments
# 色を使う
setopt prompt_subst
# ^Dでログアウトしない。
setopt ignoreeof
# バックグラウンドジョブが終了したらすぐに知らせる。
setopt no_tify
# 直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups
# タブによるファイルの順番切り替えをしない
unsetopt auto_menu
# cd -[tab]で過去のディレクトリにひとっ飛びできるようにする
setopt auto_pushd
# 重複したディレクトリを追加しない
setopt pushd_ignore_dups
# ディレクトリ名を入力するだけでcdできるようにする
setopt auto_cd
# 高機能なワイルドカード展開を使用する
setopt extended_glob
# ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000
# 同時に起動したzshの間でヒストリを共有する
setopt share_history
# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space
# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks
# -------------------------------------
# パス
# -------------------------------------
# 重複する要素を自動的に削除
typeset -U path cdpath fpath manpath
path=(
$HOME/bin(N-/)
/usr/local/bin(N-/)
/usr/local/sbin(N-/)
$path
)
# -------------------------------------
# プロンプト
# -------------------------------------
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git svn
zstyle ':vcs_info:*' max-exports 6 # formatに入る変数の最大数
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' formats '%b@%r' '%c' '%u'
zstyle ':vcs_info:git:*' actionformats '%b@%r|%a' '%c' '%u'
setopt prompt_subst
function vcs_echo {
local st branch color
STY= LANG=en_US.UTF-8 vcs_info
st=`git status 2> /dev/null`
if [[ -z "$st" ]]; then return; fi
branch="$vcs_info_msg_0_"
if [[ -n "$vcs_info_msg_1_" ]]; then color=${fg[green]} #staged
elif [[ -n "$vcs_info_msg_2_" ]]; then color=${fg[red]} #unstaged
elif [[ -n `echo "$st" | grep "^Untracked"` ]]; then color=${fg[blue]} # untracked
else color=${fg[cyan]}
fi
echo "%{$color%}(%{$branch%})%{$reset_color%}" | sed -e s/@/"%F{yellow}@%f%{$color%}"/
}
PROMPT='
%F{yellow}[%~]%f `vcs_echo`
%(?.$.%F{red}$%f) '
# -------------------------------------
# エイリアス
# -------------------------------------
# -n 行数表示, -I バイナリファイル無視, svn関係のファイルを無視
alias grep="grep --color -n -I --exclude='*.svn-*' --exclude='entries' --exclude='*/cache/*'"
# ls
alias l="ls -la"
alias l1="ls -1"
alias ls="ls -G"
alias ll="ls -lG"
alias la="ls -lGa"
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
# グローバルエイリアス
alias -g L='| less'
alias -g G='| grep'
# tree
alias tree="tree -NC" # N: 文字化け対策, C:色をつける
# git
alias g='git'
alias ga='git add'
alias gb='git branch'
alias gc='git checkout'
alias gco='git commit'
alias gd='git diff'
alias gp='git push'
alias gs='git status'
# C で標準出力をクリップボードにコピーする
# mollifier delta blog : http://mollifier.hatenablog.com/entry/20100317/p1
if which pbcopy >/dev/null 2>&1 ; then
# Mac
alias -g C='| pbcopy'
elif which xsel >/dev/null 2>&1 ; then
# Linux
alias -g C='| xsel --input --clipboard'
elif which putclip >/dev/null 2>&1 ; then
# Cygwin
alias -g C='| putclip'
fi
# -------------------------------------
# キーバインド
# -------------------------------------
bindkey -e
function cdup() {
echo
cd ..
zle reset-prompt
}
zle -N cdup
bindkey '^K' cdup
bindkey "^R" history-incremental-search-backward
# -------------------------------------
# その他
# -------------------------------------
# cdしたあとで、自動的に ls する
function chpwd() { ls -1 }
# iTerm2のタブ名を変更する
function title {
echo -ne "\033]0;"$*"\007"
}