Homebrewでzsh導入&oh-my-zsh初期設定まとめ
2017/03/06
こんにちは、okutani(@okutani_t)です。本記事では、MacにHomebrewを使ってzshとoh-my-zshを導入、初期設定をおこなっています。
私は大学院時代にMacBookAirを買ってから、頻繁にターミナルを使うようになりました。
最初はbashを使っていたのですが、友達に「zsh使ったほうがいろいろ幸せになれるよ」と教えてもらい、Homebrewを使ってzshを導入しました。
また、zshをさらに使いやすくしてくれる「oh-my-zsh」の導入方法についても合わせて説明しています。参考にしてください。
スポンサーリンク
もくじ
Homebrewを導入する
では、zshを導入する前に、HomebrewをMacに導入しましょう。Homebrewの詳しい説明は別記事でも紹介しているので合わせてどうぞ。
ターミナルから次のコマンドでHomebrewを導入します。導入前にXcodeが入っている必要があります。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
導入時にエラーがないか確認しておきます。
$ brew doctor
エラーが出たら適宜ぐぐって解決しておきましょう。
Homebrewでzshを導入する
Homebrewでzshを導入していきます。実は、Macにはデフォルトでzshが導入されています。
下記のコマンドを入力すると、デフォルトで入っているzshを確認することができます。
$ /bin/zsh --version
zsh 5.0.5 (x86_64-apple-darwin14.0)
デフォルトで入っているzshは大抵古いバージョンなので、Homebrewで最新のものを使うと良いですね。
では、Homebrewを使ってzshを導入します。まずは次のコマンドでインストールできるzshの状態を確認。
$ brew info zsh
zsh: stable 5.1 (bottled)
UNIX shell (command interpreter)
http://www.zsh.org/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/zsh.rb
==> Dependencies
Required: gdbm ✔, pcre ✔
==> Options
--without-etcdir
Disable the reading of Zsh rc files in /etc
==> Caveats
Add the following to your zshrc to access the online help:
unalias run-help
autoload run-help
HELPDIR=/usr/local/share/zsh/help
brewでzshを入れると、5.1が使えることが分かりました。
Macのzshは起動時にPATHをリセットしまうため、Optionsの項目にある「–without-etcdir」を利用してそれを回避する必要があります。
では、下記コマンドでzshを導入しましょう。
$ brew install --without-etcdir zsh
ここで、zshの補完機能をパワーアップすることができる「zsh-completions」も一緒に導入します。
gitやbrewコマンド等も補完対象に含めてくれてるので、非常に便利です。
$ brew install zsh-completions
.zshrcに、下記を記述することでzsh-completionsを有効にできます。
fpath=(/path/to/homebrew/share/zsh-completions $fpath)
autoload -U compinit
compinit -u
zsh-completionsの設定はのちほど、.zshrcにまとめておこなっていきます。ここでは特に.zshrcの記述はおこなわず、次に進みましょう。
ログインシェルをzshに変更する
ログインシェルを、Homebrewで導入したzshに変更します。まず始めに、次のコマンドで現在のシェルを調べてみましょう。
$ echo $SHELL
/bin/bash
bashに設定されているのが確認できました。Homebrewで導入したzshに切り替えます。
Homebrewで導入したzshは「/usr/local/bin/zsh」に格納されています。このパスを「/etc/shells」に追記することで、シェルの変更対象に含むことができます。
普段使っているエディターで/etc/shellsを開きましょう。今回はviを使いました。
$ vi /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh # ここに追記
「chsh」コマンドでログインシェルを切り替えることができます。その際パスワード入力を求められるので、Macで利用しているパスワードを入力しましょう。
$ chsh -s /usr/local/bin/zsh
Changing shell for okutani.
Password for okutani:[パスワードを入力]
ターミナルを再起動して、先ほどと同じように現在のシェルを確認してみます。
$ echo $SHELL
/usr/local/bin/zsh
無事にHomebrewで導入したzshに切り替わっていることが確認できました。
oh-my-zshの導入
次に「oh-my-zsh」を導入していきましょう。oh-my-zshを使うことで、カスタマイズされたカッコいいzshが使えます。
いろいろな見た目のテーマが使えたり、便利なaliasが予め設定されていたりと便利です。ぜひ導入しておきたいですね。
oh-my-zshの導入は下記コマンドでおこなえます。
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
導入後、.zshrcに「export ZSH_THEME=”テーマ名”」とすることで、テーマを変更することができます(後述の.zshrcの記述でまとめて設定)。
テーマ一覧は下記サイトで確認できます。zshの設定が終わったあとに、好みのテーマを見つけてみてください。
LINKThemes · robbyrussell/oh-my-zsh Wiki · GitHub
では、zshの初期設定をおこなっていきましょう。
zshの初期設定
zshの初期設定をおこなっていきます。zshの設定は「~/.zshrc」に記述していきます。
予めtouchコマンドで作成しておくか、「vi ~/.zshrc」で新規で開いて保存しておくと良いです。
ただ、oh my zshを導入しておくとデフォルトで.zshrcが作成されているはずなので、そのまま.zshrcを編集していきましょう。
$ vi ~/.zshrc
すでにoh-my-zshがいろいろと初期設定をおこなってくれています。私は次のように編集しました。
# Path to your oh-my-zsh installation. export ZSH=/Users/okutani/.oh-my-zsh # Set name of the theme to load. # Look in ~/.oh-my-zsh/themes/ # Optionally, if you set this to "random", it'll load a random theme each # time that oh-my-zsh is loaded. # oh-my-zshで利用できるテーマを指定 ZSH_THEME="candy" # Uncomment the following line to use case-sensitive completion. # CASE_SENSITIVE="true" # Uncomment the following line to use hyphen-insensitive completion. Case # sensitive completion must be off. _ and - will be interchangeable. # HYPHEN_INSENSITIVE="true" # Uncomment the following line to disable bi-weekly auto-update checks. # DISABLE_AUTO_UPDATE="true" # Uncomment the following line to change how often to auto-update (in days). # export UPDATE_ZSH_DAYS=13 # Uncomment the following line to disable colors in ls. # DISABLE_LS_COLORS="true" # Uncomment the following line to disable auto-setting terminal title. # DISABLE_AUTO_TITLE="true" # Uncomment the following line to enable command auto-correction. # ENABLE_CORRECTION="true" # Uncomment the following line to display red dots whilst waiting for completion. # COMPLETION_WAITING_DOTS="true" # Uncomment the following line if you want to disable marking untracked files # under VCS as dirty. This makes repository status check for large repositories # much, much faster. # DISABLE_UNTRACKED_FILES_DIRTY="true" # Uncomment the following line if you want to change the command execution time # stamp shown in the history command output. # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" # HIST_STAMPS="mm/dd/yyyy" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. # oh my zshで利用できるプラグインを指定 plugins=(brew brew-cask cdd gem git rbenv vagrant) # User configuration export PATH="/Users/okutani/.rbenv/shims:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export PATH="/usr/local/sbin:$PATH" # export MANPATH="/usr/local/man:$MANPATH" source $ZSH/oh-my-zsh.sh # You may need to manually set your language environment # export LANG=en_US.UTF-8 # Preferred editor for local and remote sessions # if [[ -n $SSH_CONNECTION ]]; then # export EDITOR='vim' # else # export EDITOR='mvim' # fi # Compilation flags # export ARCHFLAGS="-arch x86_64" # ssh # export SSH_KEY_PATH="~/.ssh/dsa_id" # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh # users are encouraged to define aliases within the ZSH_CUSTOM folder. # For a full list of active aliases, run `alias`. # # Example aliases # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" # 文字コードの指定 export LANG=ja_JP.UTF-8 # 日本語ファイル名を表示可能にする setopt print_eight_bit # cdなしでディレクトリ移動 setopt auto_cd # ビープ音の停止 setopt no_beep # ビープ音の停止(補完時) setopt nolistbeep # cd -<tab>で以前移動したディレクトリを表示 setopt auto_pushd # ヒストリ(履歴)を保存、数を増やす HISTFILE=~/.zsh_history HISTSIZE=100000 SAVEHIST=100000 # 同時に起動したzshの間でヒストリを共有する setopt share_history # 直前と同じコマンドの場合は履歴に追加しない setopt hist_ignore_dups # 同じコマンドをヒストリに残さない setopt hist_ignore_all_dups # スペースから始まるコマンド行はヒストリに残さない setopt hist_ignore_space # ヒストリに保存するときに余分なスペースを削除する setopt hist_reduce_blanks # キーバインディングをemacs風に(-vはvim) bindkey -e # bindkey -v # zsh-completionsの設定 fpath=(/path/to/homebrew/share/zsh-completions $fpath) autoload -U compinit compinit -u
ハイライトされている行が「変更または追加」した行です。
.zshrcの設定はぐぐればたくさん出てきますので、適宜自分の使いやすいように記述してみましょう。デフォルトの#でコメントアウトされている記述は削除してOKです。
oh-my-zshのプラグイン設定「plugins=(プラグイン名…)」は、ご自身が使いたいプラグインを指定してください。利用できるプラグインは下記サイトから確認できます。
参考oh-my-zsh/plugins at master · robbyrussell/oh-my-zsh · GitHub
.zshrcの記述が済んだら、「source」コマンドで設定を反映させておきましょう。
$ source ~/.zshrc
最後にzsh-completionsの公式のとおり、次のコマンドで「.zcompdump」をリビルドしておきます。
$ rm -f ~/.zcompdump; compinit
これでzsh, zsh-completions, oh-my-zshが使えるようになりました。
ちなみに、oh my zshで設定されたエイリアスは「alias」コマンドで確認できます。
$ alias
...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
省略...
こちらも合わせて見ておくと便利です。
zshの動作確認
ターミナルを再起動、zshの動作を確認してみます。最終的に次のようにカッコよくなりました。
補完もtabでいい感じにおこなってくれます(ターミナルはiTerm2を使っています)。
使い勝手が格段に向上していて、かなり便利です。
ぜひMacのターミナル環境の構築に役立ててください。
まとめ
zsh + oh-my-zshで快適なターミナル環境を作ることができました。
補完を強化するzsh-completionsも合わせて入れておくと便利です。ぜひとも、一緒に設定しておきたいですね。
また、Macで使うターミナルはiTerm2が使いやすくておすすめです。
iTerm2記事も合わせて参考にしてみてください。
参考になれば幸いです。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク