oh-my-zsh を使って zsh の便利な設定をまとめて取り入れる

最近 oh-my-zsh ってのがあるって聞いた。インストールするだけで zsh が便利になるみたいなので、早速試してみた。

oh-my-zsh って何?

oh-my-zshzsh の設定を管理するフレームワークで、いろんな設定を有効にして管理、更新できるようになる。プロジェクトは GitHub で管理されてる。

http://github.com/robbyrussell/oh-my-zsh

特徴としてこんなことが挙げられてる。

  • 40以上のプロンプト テーマ
  • 便利なプラグイン
  • 自動アップデート機能
  • コミュニティ主体の開発(みんなの設定を取り込んでいく)

インストールすると、だいたいこんなことが設定される。

  • プロンプトがかっこよく(?)なる
  • alias がいっぱい設定される
  • よく使う option が設定される

インストール直後はこんな感じ。

Git のブランチ名も表示される。

必要な環境なんだけど、zsh のバージョンは 4.3.9 以降を推奨してる。Mac の Snow Leopard の人はデフォルトの zsh で OK。あと、全体的に Git 使ってること前提っぽい。

インストール

インストール用に自動スクリプトがある。

% wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

こいつを実行すれば oh-my-zsy がローカル環境にインストールされる。でも、勝手に chsh でログインシェルを変えたりして色々やりすぎなので、あんまりおすすめしない。

手動でインストールする方法は以下。

% git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
# 自分の ~/.zshrc がすでにある場合はリネームしておく
% mv ~/.zshrc ~/.zshrc.orig
% cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

どっちの方法も Git が必要になる。Git 使えない人は GitHub のプロジェクトページから圧縮ファイルをダウンロードしてインストールしよう。

# ダウンロードファイルを展開して ~/.oh-my-zsh にコピーする
% unzip robbyrussell-oh-my-zsh-541da0c.zip
% mv robbyrussell-oh-my-zsh-541da0c ~/.oh-my-zsh
% cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

インストールした後適当に zsh を再起動すると oh-my-zsh が有効になる。

あと、インストール先の ~/.oh-my-zsh というディレクトリ名は固定で、変えたら動かない

プロンプトの設定

oh-my-zsh にプロンプトのテーマがいっぱい入ってる。~/.zshrc で ZSH_THEME を設定するとテーマを変更できる。

# ~/.zshrc 6行目
# デフォルトは robbyrussell
export ZSH_THEME="robbyrussell"

~/.oh-my-zsh/themes の中を見て、好きなものに変更しよう。

export ZSH_THEME="cypher"

zsh を再起動すると新しいテーマになる。

プラグイン

~/.oh-my-zsh/plugins/ 以下に独自のプラグインが入ってる。

% ls ~/.oh-my-zsh/plugins/
brew/  dirpersist/  git/         macports/  osx/  rails/  ssh-agent/  vi-mode/
cap/   gem/         lighthouse/  mysql/     pip/  ruby/   textmate/

このうち使用するものを ~/.zshrc で指定する。デフォルトはこんな感じ。

# ~/.zshrc 19行目
plugins=(git)

使用したいものを指定しよう。

plugins=(git ruby gem)

プラグインと言ってもそんな凝ったことしてるわけじゃなくて、 だいたい alias、便利な関数、 補完ファイルとかが読み込まれるだけ。

カスタム設定

自分の独自の設定は ~/.oh-my-zsh/custom に適当な名前(最後は .zsh)でファイルを作ってそこに書く。

# 例
% cat ~/.oh-my-zsh/custom/custom-aliases.zsh
alias v='vim'
alias vr='vim -R'
alias c='cd'

好きなように書いておこう。

自動アップデート

1週間に1回のタイミングで、zsh 起動時に自動的アップデートされる。アップデートといっても単純に GitHub から pull してくるだけ。なので Git 使わずにインストールした人はこの機能が使えない。

勝手にアップデートされるのがいやなら ~/.zhsrc で無効にできる。

# ~/.zshrc 12行目をアンコメント
export DISABLE_AUTO_UPDATE="true"

使ってみた感じ

使ってみた感想なんだけど、なんか全体的に作った人の「個人的な便利設定の集まり」みたいになってる。一般におすすめできるかというと、ちょっと疑問が残る。

作者の theunraveler さんの環境はたぶんこんな感じ。

典型的な(?) Rubyist だと思うので、そういう人意外にはありがたみがないかもしれない。

例えば textmate プラグインにこんな設定が入ってる。

alias ett='mate app config lib db public spec test Rakefile Capfile Todo &'

Textmate(Mac 用のエディタ)の設定のはずが、明らかに Rails 使ってること前提になってる。なので Rails やってない人はこのへん意味ない。(だからプラグインの形になってるわけね)

というか、そもそも alias って手癖みたいなもんで、めちゃ人に依存するとこだと思う。なので誰かの設定をそのまま持ってきても便利になるとは限らない。すでに zsh カスタマイズしまくりの人が oh-my-zsh 使ってもかえって混乱するだけだと思う。

なので、oh-my-zsh をおすすめするのは以下の人。

  • これから zsh を初めて使う人
  • 設定とかカスタマイズとか自分でやりたくない人
  • Mac で RubyRails な人

でもインストールするだけで zsh の補完とかがすぐ使えるようになるのは良いと思う。というわけで、「zsh ってよくわかんないし、設定難しいし、簡単にパワフルな機能使ってウヒョーってなりたい」ってひとは使ってみるといいと思うよ。