最近の.zshrcを再度晒してみる

昔zshrcについては晒した事があったんだけど、
シェルを覚えた経緯のエントリのおかげで結構見に来てくれる人が増えたし、そういう人はシェル系の情報求めてるかな?と
現在のOSXで使ってるzshrcを再度晒してみる。


前回と極端に変わったわけではないけど。

# ファイルを作るとき、どんな属性で作るか。man umask 参照
umask 022
# 補間機能
autoload -U compinit
compinit
# Ctrl-D でログアウトするのを抑制する
setopt IGNORE_EOF
# グロッビングの拡張
setopt EXTENDED_GLOB
# cd するときに、自動でプッシュする
setopt AUTO_PUSHD
# 重複したPUSHDリストは消す
setopt PUSHD_IGNORE_DUPS
# ディレクトリ名だけで移動できる。
setopt auto_cd
# rm * を実行する前に確認される。
#setopt rmstar_wait
# Grip などGlibアプリケーション出力での文字化け防止
export G_FILENAME_ENCODING=@locale
# stack size
ulimit -s unlimited

alias rake='rake _0.7.3_'
alias cap='cap _1.4.1_'
alias screen='screen -U'

# Prompt decoration
local Cname=$'%{\e[0;0m%}'
local Cdict=$'%{\e[0;0m%}'
local Cprom=$'%{\e[0;34m%}'
local DEFAULT=$'%{\e[0;0m%}'
# PROMPT="$Cname$USER$Cprom@%m:\
# [$Cdict%~$Cprom]$DEFAULT$ "
PROMPT='%D %T %(!.#.$) '
RPROMPT='[%~]'
# 履歴をファイルに保存する
HISTFILE=$HOME/.zsh_history
# メモリ内の履歴の数
HISTSIZE=100000
# 保存される履歴の数
SAVEHIST=100000
# 履歴ファイルに時刻を記録
setopt append_history
setopt extended_history
# 全履歴の一覧を出力する
function history-all { history -E 1 }
# 履歴の共有
setopt share_history
# ヒストリの最初の空白を除く
setopt HIST_IGNORE_SPACE
# ビープ音を鳴らさないようにする
setopt NO_beep

# 8 ビット目を通すようになり、日本語のファイル名などを見れるようになる
setopt print_eightbit

case "${TERM}" in
kterm*|xterm)
    precmd() {
        echo -ne "\033]0;${USER}@${HOST%%.*}:${PWD}\007"
    }
    ;;
esac


HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_ignore_dups     # ignore duplication command history list
setopt share_history        # share command history data

bindkey -e

export PATH=/usr/local/pgsql/bin:/opt/local/bin:$HOME/local/bin:$PATH
export PERL5LIB=$HOME/local/lib/perl5:$HOME/local/lib/perl5/site_perl
# if [ $TERM != "screen" ]; then
#   screen -U
# fi

preexec () {
    PROMPT='%D %T %(!.#.$) '
    RPROMPT='[%~]'
    if [ $TERM = "screen" ]; then
        1="$1 " # deprecated.
        echo -ne "\ek${${(s: :)1}[0]}\e\\"
    fi
  }


zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
                             /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin


変わってる所をいくつか解説。


preexecでscreenに実行したコマンドの名前を反映させると同時に、時間を表示させてる。

preexec () {
    PROMPT='%D %T %(!.#.$) '
    RPROMPT='[%~]'
    if [ $TERM = "screen" ]; then
        1="$1 " # deprecated.
        echo -ne "\ek${${(s: :)1}[0]}\e\\"
    fi
  }

プロンプトに時間を出す目的は、screenログで後で時間が見れる様にするため。
実際に使ったことはないですが。
どのぐらい放置してたかとかがわかって結構面白い。

あとaliasはうちのアプリ用にバージョン指定とかしてる。

alias rake='rake _0.7.3_'
alias cap='cap _1.4.1_'

rakeもCapistranoもバージョン変わってこれまでの開発アプリとかが動かないので
旧バージョンを基本に動かしてます。


まだrails2.0の開発もしてないですし。