« git-svn駆け込み寺 | メイン | 携帯向けXHTML »

zshはじめました。
このエントリーをはてなブックマークに追加 このエントリーをlivedoorクリップに追加

今までずっとbashを使ってきて、やっとこzshに乗り換えることに踏み切ったHIROKIです。

昔に同僚がOSデフォルトでついてくるシェルではもの足らず、zshを導入した後にシステムに大きな変更を加えてzshが正常に動作しなくなりました。ユーザーではもちろんログインできず、rootのシェルもzshにしていたために、rootでもログインできず、どうにもこうにもならない状態となっているのを目撃してからはOSデフォルト以外のシェルを使うのをやめていました。

扱うのはLinuxが中心だったので、いままでbashが中心。
FreeBSDを扱うときは、もちろんcshでした。

そして、ウノウではみんなzshであり、魔法のようなコマンドさばきを見ていて、とうとうzshに踏み切りました。

そんなこんながありまして、zshを改めて設定してみました。
皆さんも、導入を検討してみてはいかがでしょうか。

まず、bashがデフォルトのOSであれば、$HOME/.bashrcに下記を追加しておきます。

# use zsh
if [ -f /bin/zsh ]; then
    exec /bin/zsh
fi

こうすることによって、たとえzshが正常に動作しなくなったとしてもzshさえ消せば、OSデフォルトのbashで動作することができます。

ここからは、$HOME/.zshrcをだらだらと書き連ねていきます。


# PROMPT
PS1="[@${HOST%%.*} %1~]%(!.#.$) " # この辺は好み
RPROMPT="%T" # 右側に時間を表示する
setopt transient_rprompt # 右側まで入力がきたら時間を消す
setopt prompt_subst # 便利なプロント
bindkey -e # emacsライクなキーバインド

export LANG=ja_JP.UTF-8 # 日本語環境
export EDITOR=emacs # エディタはemacs

autoload -U compinit # 強力な補完機能
compinit -u # このあたりを使わないとzsh使ってる意味なし
setopt autopushd # cdの履歴を表示
setopt pushd_ignore_dups # 同ディレクトリを履歴に追加しない
setopt auto_cd # 自動的にディレクトリ移動
setopt list_packed # リストを詰めて表示
setopt list_types # 補完一覧ファイル種別表示

# 履歴
HISTFILE=~/.zsh_history # historyファイル
HISTSIZE=10000 # ファイルサイズ
SAVEHIST=10000 # saveする量
setopt hist_ignore_dups # 重複を記録しない
setopt hist_reduce_blanks # スペース排除
setopt share_history # 履歴ファイルを共有
setopt EXTENDED_HISTORY # zshの開始終了を記録

# history 操作まわり
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

# alias
alias ls="ls -G"
zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34'

[ -f ~/.zshrc.include ] && source ~/.zshrc.include # 設定ファイルのinclude


以上が僕の.zshrcです。コピペで使えば、それなりに幸せになれます。


ポイントとしては、サーバ固有の設定やaliasに関しては、$HOME/.zshrc.includeというファイルを作って、こちらを個別に設定しています。本番サーバなんかはプロントを赤くしたり、特定のサーバにしかないコマンドはこのファイルに書いたりなど。


これが便利だ!という設定があったらぜひ、教えてください!


ではでは、またいつか。

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/1799

この一覧は、次のエントリーを参照しています: zshはじめました。:

» ウノウラボ Unoh Labs: zshはじめました。 from
ウノウラボ Unoh Labs: zshはじめました。 [詳しくはこちら]

コメント

compinitの-uオプションは、必要な時だけに限定したほうがいい気がします
自分は下記のようにしてます

if [ "`/bin/uname -o 2> /dev/null`" = "Cygwin" ]; then
 # cygwinの設定
 compinit -u
elif [ "`/bin/uname -s 2> /dev/null`" = "Interix" ]; then
 # interixの設定
 compinit -u
else
 compinit
fi

exec zsh するのは .bashrc じゃなくて .bash_profile のほうが良いのではないかと。

zsh で bash って打つと?

csh なら .login で。

コメントを投稿


画像の中に見える文字を入力してください。