.zshrc 設定サンプル

#

コマンドのエリアス設定

#

workspace

hash -d w=/var/www

(d) is default on

------------------------------

General Settings

------------------------------

export EDITOR=vim # エディタをvimに設定 export LANG=ja_JP.UTF-8 # 文字コードをUTF-8に設定 export KCODE=u # KCODEにUTF-8を設定 export AUTOFEATURE=true # autotestでfeatureを動かす

bindkey -e # キーバインドをemacsモードに設定

bindkey -v # キーバインドをviモードに設定

setopt no_beep # ビープ音を鳴らさないようにする setopt auto_cd # ディレクトリ名の入力のみで移動する setopt auto_pushd # cd時にディレクトリスタックにpushdする setopt correct # コマンドのスペルを訂正する setopt magic_equal_subst # =以降も補完する(--prefix=/usrなど) setopt prompt_subst # プロンプト定義内で変数置換やコマンド置換を扱う setopt notify # バックグラウンドジョブの状態変化を即時報告する setopt equals # =commandをwhich commandと同じ処理にする

Complement

autoload -U compinit; compinit # 補完機能を有効にする setopt auto_list # 補完候補を一覧で表示する(d) setopt auto_menu # 補完キー連打で補完候補を順に表示する(d) setopt list_packed # 補完候補をできるだけ詰めて表示する setopt list_types # 補完候補にファイルの種類も表示する bindkey "^[[Z" reverse-menu-complete # Shift-Tabで補完候補を逆順する("\e[Z"でも動作する) zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # 補完時に大文字小文字を区別しない

Glob

setopt extended_glob # グロブ機能を拡張する unsetopt caseglob # ファイルグロブで大文字小文字を区別しない

History

HISTFILE=~/.zsh_history # ヒストリを保存するファイル HISTSIZE=10000 # メモリに保存されるヒストリの件数 SAVEHIST=10000 # 保存されるヒストリの件数 setopt bang_hist # !を使ったヒストリ展開を行う(d) setopt extended_history # ヒストリに実行時間も保存する setopt hist_ignore_dups # 直前と同じコマンドはヒストリに追加しない setopt share_history # 他のシェルのヒストリをリアルタイムで共有する setopt hist_reduce_blanks # 余分なスペースを削除してヒストリに保存する

マッチしたコマンドのヒストリを表示できるようにする

autoload history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey "^P" history-beginning-search-backward-end bindkey "^N" history-beginning-search-forward-end

すべてのヒストリを表示する

function history-all { history -E 1 }

------------------------------

Look And Feel Settings

------------------------------

Ls Color

色の設定

export LSCOLORS=Exfxcxdxbxegedabagacad

補完時の色の設定

export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'

ZLS_COLORSとは?

export ZLS_COLORS=$LS_COLORS

lsコマンド時、自動で色がつく(ls -Gのようなもの?)

export CLICOLOR=true

補完候補に色を付ける

zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

Prompt

プロンプトに色を付ける

autoload -U colors; colors

一般ユーザ時

tmp_prompt="%{${fg[cyan]}%}%n%# %{${reset_color}%}" tmp_prompt2="%{${fg[cyan]}%}%_> %{${reset_color}%}" tmp_rprompt="%{${fg[green]}%}[%~]%{${reset_color}%}" tmp_sprompt="%{${fg[yellow]}%}%r is correct? [Yes, No, Abort, Edit]:%{${reset_color}%}"

rootユーザ時(太字にし、アンダーバーをつける)

if [ ${UID} -eq 0 ]; then tmp_prompt="%B%U${tmp_prompt}%u%b" tmp_prompt2="%B%U${tmp_prompt2}%u%b" tmp_rprompt="%B%U${tmp_rprompt}%u%b" tmp_sprompt="%B%U${tmp_sprompt}%u%b" fi

PROMPT=$tmp_prompt # 通常のプロンプト PROMPT2=$tmp_prompt2 # セカンダリのプロンプト(コマンドが2行以上の時に表示される) RPROMPT=$tmp_rprompt # 右側のプロンプト SPROMPT=$tmp_sprompt # スペル訂正用プロンプト

SSHログイン時のプロンプト

[ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}" ;

Title (user@hostname)

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

------------------------------

Other Settings

------------------------------

RVM

if -s ~/.rvm/scripts/rvm ; then source ~/.rvm/scripts/rvm ; fi

Macports

case "${OSTYPE}" in darwin*) export PATH=/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/share/man:/opt/local/man:$MANPATH ;; esac

Aliases

alias r=rails alias v=vim

cdコマンド実行後、lsを実行する

function cd() {

builtin cd $@ && ls;

}

autoload bashcompinit bashcompinit setopt PROMPT_SUBST

source ~/incr-0.2.zsh

VCSの情報を取得するzshの便利関数 vcs_infoを使う

autoload -Uz vcs_info

表示フォーマットの指定

%b ブランチ情報

%a アクション名(mergeなど)

zstyle ':vcs_info:' formats '[%b]' zstyle ':vcs_info:' actionformats '[%b|%a]' precmd () { psvar=() LANG=en_US.UTF-8 vcs_info [[ -n "$vcs_info_msg_0" ]] && psvar[1]="$vcs_info_msg_0" }

バージョン管理されているディレクトリにいれば表示,そうでなければ非表示

RPROMPT="%1(v|%F{green}%1v%f|)"