Skip to content

Instantly share code, notes, and snippets.

@katsuma
Created December 10, 2011 17:20
Show Gist options
  • Save katsuma/1455638 to your computer and use it in GitHub Desktop.
Save katsuma/1455638 to your computer and use it in GitHub Desktop.
my latest .zshrc
#
# after edit this file, type "zcompile .zshrc"
#
export LANG=ja_JP.UTF-8
HISTFILE=$HOME/.zsh-history
HISTSIZE=100000
SAVEHIST=100000
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
alias l='ls -lh'
alias ll='ls -alh'
alias vi='vim'
alias emacs="open -a /Applications/Emacs.app/Contents/MacOS/Emacs"
alias g="git"
alias r="rails"
alias rs="LANG='' rails server"
alias bx="bundle exec"
autoload -U colors
## prompt
local GREEN=$'%{\e[1;32m%}'
local YELLOW=$'%{\e[1;33m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'
PROMPT=$'\n'$GREEN'${USER}@${HOSTNAME} '$YELLOW'%~ '$'\n'$DEFAULT'%(!.#.$) '
autoload -Uz vcs_info
zstyle ':vcs_info:*' formats '[%b]'
zstyle ':vcs_info:*' actionformats '[%b|%a]'
## growlnotify
local COMMAND=""
local COMMAND_TIME=""
precmd () {
if [ "$COMMAND_TIME" -ne "0" ] ; then
local d=`date +%s`
d=`expr $d - $COMMAND_TIME`
if [ "$d" -ge "10" ] ; then
COMMAND="$COMMAND "
growlnotify -t "${${(s: :)COMMAND}[1]}" -m "$COMMAND"
fi
fi
COMMAND="0"
COMMAND_TIME="0"
psvar=()
LANG=en_US.UTF-8 vcs_info
[[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
preexec() {
COMMAND="${1}"
if [ "`perl -e 'print($ARGV[0]=~/^(?:ssh |cd|git|rak^e|vi|ss|sc|emacs|less|tail |cat |irb)/)' $COMMAND`" -ne 1 ] ; then
COMMAND_TIME=`date +%s`
fi
}
RPROMPT="%1(v|%F{cyan}%1v%f|)"
## キーが唐突におかしくなったのでその対応
bindkey -e
## 履歴 via http://subtech.g.hatena.ne.jp/secondlife/20110222/1298354852
bindkey '^R' history-incremental-pattern-search-backward
## 補完機能の強化
autoload -U compinit
compinit
## コアダンプサイズを制限
limit coredumpsize 102400
## 出力の文字列末尾に改行コードが無い場合でも表示
unsetopt promptcr
## 色を使う
setopt prompt_subst
## ビープを鳴らさない
setopt nobeep
## 内部コマンド jobs の出力をデフォルトで jobs -l にする
setopt long_list_jobs
## 補完候補一覧でファイルの種別をマーク表示
setopt list_types
## サスペンド中のプロセスと同じコマンド名を実行した場合はリジューム
setopt auto_resume
## 補完候補を一覧表示
setopt auto_list
## 直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups
## cd 時に自動で push
setopt autopushd
## 同じディレクトリを pushd しない
setopt pushd_ignore_dups
## ファイル名で #, ~, ^ の 3 文字を正規表現として扱う
setopt extended_glob
## TAB で順に補完候補を切り替える
setopt auto_menu
## zsh の開始, 終了時刻をヒストリファイルに書き込む
setopt extended_history
## =command を command のパス名に展開する
setopt equals
## --prefix=/usr などの = 以降も補完
setopt magic_equal_subst
## ヒストリを呼び出してから実行する間に一旦編集
setopt hist_verify
# ファイル名の展開で辞書順ではなく数値的にソート
setopt numeric_glob_sort
## 出力時8ビットを通す
setopt print_eight_bit
## ヒストリを共有
setopt share_history
## matchするものがなくても警告なし
setopt no_nomatch
## 補完候補のカーソル選択を有効に
zstyle ':completion:*:default' menu select=1
## 補完候補の色づけ
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
## sudoを付けても補完
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin
## ディレクトリ名だけで cd
setopt auto_cd
## カッコの対応などを自動的に補完
setopt auto_param_keys
## ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
## スペルチェック
setopt correct
function ssh_screen(){
eval server=\${$#}
screen -t $server ssh "$@"
}
if [ x$TERM = xscreen ]; then
alias ssh=ssh_screen
fi
# gitの管理下のルートに戻れる
# git home http://d.hatena.ne.jp/hitode909/20100211/1265879271
function u()
{
cd ./$(git rev-parse --show-cdup)
if [ $# = 1 ]; then
cd $1
fi
}
## rvm
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then source "$HOME/.rvm/scripts/rvm" ; fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment