Zsh

iTerm2 と zsh のインストールと基本的な設定

More than 3 years have passed since last update.

今までは何も考えずに Terminal.app で bash を使ってたけど,最近黒い画面で作業することが多くなった.なので,この機会に Terminal.app と bash から卒業して,iTerm2 と zsh を使うことにした.

iTerm2 と zsh を使おうと思ったきっかけはこの記事.


http://yulily100.hatenablog.jp/entry/2014/08/03/230442


インストールの方法とか基本的な設定はほぼこの記事を真似てます.


環境

Mac OSX 10.9.4 Mavericks


iTerm2 のインストール

http://iterm2.com/ にアクセスし,Downloads からダウンロードして解凍,Application フォルダにつっこむ.


iTerm2 のカラースキーム

Preference -> Profiles -> Colors -> Load Presets からカラースキームを選ぶことができる.プリインストールされているものから選んでもいいし,Visit Online Gallery をクリックすると様々なカラースキームが配布されているサイト一覧に飛ぶので,そこから探すのもあり.

今回は,GitHub で配布されているカラースキームを使用した.


https://github.com/larssmit/iterm2-getafe


ダウンロードして解凍すると getafe.itermcolors というファイルがあるので,それを Load Presets の所にある Import からインポートする.そうすると,Load Presets のところで getafe が選べるようになる.

Screen Shot 2014-08-12 at 1.23.19.png


iTerm2 の設定

Profiles -> General -> Command を zsh に変更.Command: のテキストボックスに zsh と入力.

General -> Text -> Regular Font, Non-ASCII Font を 13pt Monaco に

同じ画面で Tream ambiguous-width characters as double width にチェックを入れる(記号を入力したときにかぶらないようにする)


zsh のインストール

Mac にデフォルトで zsh は入ってるけど,最新版を使いたいので HomeBrew でインストールする.HomeBrew のインストール方法は割愛.

brew install zsh と打って,以下のようになれば成功.

Screen Shot 2014-08-11 at 23.39.15.png


.zshrc の中身

こちらをありがたく使わせていただきました.


https://gist.github.com/mollifier/4979906



oh-my-zsh のインストール

oh-my-zsh は zsh の設定を管理するフレームワークらしい.便利そうなのでインストールしてみた.

以下の方法でインストール


curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh


そうすると,でかでかと AA で oh-my-zsh と出てくる.これが出ればOK.

Screen Shot 2014-08-11 at 23.35.16.png


oh-my-zsh のテーマを設定

oh-my-zsh にもいろいろなテーマがある.


https://github.com/robbyrussell/oh-my-zsh/wiki/themes


.zshrc の ZSH_THEME の値を変えるだけ.

今回は wedisagree を入れてみた.このテーマの便利なところが Git のリポジトリ上にいると今いる Branch 名が表示されたり,状態によって晴れたり曇ったり雨が降ったりする.それぞれの記号の意味などはここで詳しく解説されている.


http://www.eisbahn.jp/yoichiro/2013/01/oh-my-zsh-wedisagree-git.html


Screen Shot 2014-08-12 at 1.58.21.png


まとめ

iTerm2 と zsh をいじってみたけどいい感じ.

特に oh-my-zsh のテーマが便利すぎてやばい.何か良い設定があったらぜひ教えてください.


追記


percol で飛びたいディレクトリに素早く飛ぶ!

Twitter で kickbase さんからご教授いただき,早速使ってみた.

以下の 2 つの記事を参考にしました.


http://blog.zoncoen.net/blog/2014/01/14/percol-autojump-with-zsh/

http://stillpedant.hatenablog.com/entry/percol-cd-history



percol のインストール

https://github.com/mooz/percol/blob/master/README.md の通り,

git clone git://github.cpm/mooz/percol.git

cd percol
python setup.py install

と打ってみたが,どうやらインストール中に /Library/ 以下にディレクトリを作るらしく,Permission Denied と言われてしまった.なので,sudo をつけて setup.py を実行.

Screen Shot 2014-08-12 at 2.47.52.png

インストールした後,percol と打つと AA で percol と表示される.

(oh-my-zsh もそうだったけど,AA でプロダクト名表示させるの流行なのかな…?w)

AA の下に簡単な使い方が書いてあるので,試してみるといい.

Screen Shot 2014-08-12 at 2.48.04.png


percol で一度でも cd したことがあるディレクトリに効率よく cd する設定

参考記事からそのまま使わせていただきます.

# {{{

# cd 履歴を記録
typeset -U chpwd_functions
CD_HISTORY_FILE=${HOME}/.cd_history_file # cd 履歴の記録先ファイル
function chpwd_record_history() {
echo $PWD >> ${CD_HISTORY_FILE}
}
chpwd_functions=($chpwd_functions chpwd_record_history)

# percol を使って cd 履歴の中からディレクトリを選択
# 過去の訪問回数が多いほど選択候補の上に来る
function percol_get_destination_from_history() {
sort ${CD_HISTORY_FILE} | uniq -c | sort -r | \
sed -e 's/^[ ]*[0-9]*[ ]*//' | \
sed -e s"/^${HOME//\//\\/}/~/" | \
percol | xargs echo
}

# percol を使って cd 履歴の中からディレクトリを選択し cd するウィジェット
function percol_cd_history() {
local destination=$(percol_get_destination_from_history)
[ -n $destination ] && cd ${destination/#\~/${HOME}}
zle reset-prompt
}
zle -N percol_cd_history

# percol を使って cd 履歴の中からディレクトリを選択し,現在のカーソル位置に挿入するウィジェット
function percol_insert_history() {
local destination=$(percol_get_destination_from_history)
if [ $? -eq 0 ]; then
local new_left="${LBUFFER} ${destination} "
BUFFER=${new_left}${RBUFFER}
CURSOR=${#new_left}
fi
zle reset-prompt
}
zle -N percol_insert_history
# }}}

# C-x ; でディレクトリに cd
# C-x i でディレクトリを挿入
bindkey '^x;' percol_cd_history
bindkey '^xi' percol_insert_history

この設定を .zshrc に追加することで,percol_cd_history と percol_insert_history というコマンドが追加される.設定で,それぞれのコマンドに C-x ; と C-x i というコマンドを割り当てているので,ここはお好みで.


今回の設定で追加したコマンドの特徴


  • percol のマッチング機能が使える


    • And 検索

    • Migemo(ローマ字のまま日本語をインクリメンタルサーチするツール)

    • 正規表現



  • cd された回数も記録するので,よく飛ぶディレクトリに飛びやすい

  • ジャンプするだけでなく挿入もできる


    • コマンドの引数入力時に使える



${HOME}/.cd_history_file に履歴を記録するので,最初はあまり役に立たない.

cd すればするほど便利になってくる.


percol_cd_history の実行画面

Screen Shot 2014-08-12 at 3.08.37.png

導入したばかりなので 2 つしか履歴がないが,カーソルを矢印キーで合わせた状態で Enter キーを押せばそのディレクトリにジャンプできる.

percol_insert_history を使った場合,選択したディレクトリのパスが挿入される.

ディレクトリの移動がめっちゃ捗りそう!ご教授いただいた kickbase さんありがとうございます!