vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです

Homebrewでzsh導入&oh-my-zsh初期設定まとめ

      2017/03/06

LINEで送る
Pocket


こんにちは、okutani(@okutani_t)です。本記事では、MacにHomebrewを使ってzshとoh-my-zshを導入、初期設定をおこなっています。

私は大学院時代にMacBookAirを買ってから、頻繁にターミナルを使うようになりました。

最初はbashを使っていたのですが、友達に「zsh使ったほうがいろいろ幸せになれるよ」と教えてもらい、Homebrewを使ってzshを導入しました。

また、zshをさらに使いやすくしてくれる「oh-my-zsh」の導入方法についても合わせて説明しています。参考にしてください。

スポンサーリンク

Homebrewを導入する

では、zshを導入する前に、HomebrewをMacに導入しましょう。Homebrewの詳しい説明は別記事でも紹介しているので合わせてどうぞ。

MacにHomebrewを導入する方法&使い方まとめ
こんにちは、okutani(@okutani_t)です。プログラミングをおこなう際に、みな必ず通る「環境構...
2015-04-18 18:15
はてブ

ターミナルから次のコマンドで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'
省略...

こちらも合わせて見ておくと便利です。

参考oh-my-zshチートシート – Qiita

zshの動作確認

ターミナルを再起動、zshの動作を確認してみます。最終的に次のようにカッコよくなりました。

補完もtabでいい感じにおこなってくれます(ターミナルはiTerm2を使っています)。

zsh-oh-my-zsh2

使い勝手が格段に向上していて、かなり便利です。

ぜひMacのターミナル環境の構築に役立ててください。

まとめ

zsh + oh-my-zshで快適なターミナル環境を作ることができました。

補完を強化するzsh-completionsも合わせて入れておくと便利です。ぜひとも、一緒に設定しておきたいですね。

また、Macで使うターミナルはiTerm2が使いやすくておすすめです。

iTerm2の導入方法&初期設定や使い方まとめ
こんにちは、okutani(@okutani_t)です。私は普段MacBookAirを使ってネットしたりプ...
2015-09-13 16:44
はてブ

iTerm2記事も合わせて参考にしてみてください。

参考になれば幸いです。

LINEで送る
Pocket

okutani (okutani_t) のヒトコト
この設定のおかげでターミナルがすごく使いやすくなりました。また、履歴をインクリメントサーチできるpecoというものもあるので、合わせて設定してみてください。

Web開発のお仕事を募集しています

フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。

Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。

ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。

LINKお問い合わせ

LINKokutani's Portfolio


 - ターミナル

スポンサーリンク

PC用AdSense

PC用AdSense

  こちらもどうぞ

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。