Z Shell (zsh) デビュー + dotfiles 整理
長瀬 敦史
いつも使っている Shell ですが、@naoya さんにお勧めしていただいてから、Z Shell (zsh) を使いたいな、と思っていて (補完とかテーマとかかっこいいし)、連休だったので、ここぞ、と重い腰を上げました。
結論、Bash 使いでも違和感なく使えて、とても満足してます。迷いなく chsh
しました。
chsh -s /bin/zsh
それを同時に、ずっとグダグダなのが気になっていた、dotfiles も整理しました。
何人かの同僚の環境構築を (最近評判の悪い) Boxen で行っており、そこから Homebrew + Homebrew Cask のみでの環境構築に移行できないかの技術検証も兼ねていました。
Boxen vs Homebrew の話は Pros. / Cons. を含めて、別途アーティクルに する予定です。 しました。
Oh My ZSH!!
ZSH 環境は Oh My ZSH から構築を始め、Plugin を幾つか試しました。
tmux プラグインは tmux コマンドを上書きしてくれるので、自分で alias tmux=tmux -2
と 256 Colors 引数付きで起動する様に設定していたのが使えなくなるので、外しました。
(そもそも .tmux.conf でも set-option -g default-terminal screen-256color
を設定しているのに、これは別用途なのでしょうか、良くわかってないです。)
他のプラグインは便利そうだったのですが、全部盛りにせずに、必要な物だけ使おうと、git, rbenv, osx
に絞りました。
ngs/dotfiles rc.d/zshrc Line#11
if [ $UNAME = 'Darwin' ]; then
fpath=($(brew --prefix)/share/zsh/site-functions $fpath)
plugins=(git rbenv osx)
else
fpath=(~/.zsh/completion $fpath)
plugins=(git rbenv)
fi
あと、rbenv プラグインはディレクトリの有無で、インストールの有無を判断しているので、Boxen が使っている、/opt/boxen/rbenv
には対応していませんでした。
robbyrussell/oh-my-zsh oh-my-zsh.sh Line#80
if [ ! "$ZSH_THEME" = "" ]; then
if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then
source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then
source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
else
source "$ZSH/themes/$ZSH_THEME.zsh-theme"
fi
fi
Symlink を貼って対応しました。
ngs/dotfiles setup/boxen.sh Line#2
[ ! -L /opt/rbenv ] && ln -s /opt/boxen/rbenv /opt/rbenv
Theme
Oh My ZSH のテーマは、どれも格好よさげなのですが、細かいニーズを満たしていなかったので、自分で作成しました。
PROMPT
は標準的な [ユーザー名]@[ホスト名] [現在地] $
。RPS1
はこんな感じです。
ngs/dotfiles rc.d/zsh/custom/ngs.zsh-theme
# あと Powerline も魅力的だったんですが、iOS の Prompt でログインして作業することもあるので、不採用にしました。
はじめは、本家を fork して Pull Request を送ろうと思っていたのですが、上記の様に README に書かれていたので、自分の dotfiles にパスを通して管理することにしました。
ソースからは以下の様にして、ロードを行っています。
robbyrussell/oh-my-zsh oh-my-zsh.sh Line#80
if [ ! "$ZSH_THEME" = "" ]; then
if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then
source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then
source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
else
source "$ZSH/themes/$ZSH_THEME.zsh-theme"
fi
fi
以下の様に追記しました。
ngs/dotfiles rc.d/zshrc Line#6
ZSH_CUSTOM=$DOTFILES/rc.d/zsh/custom
ZSH_THEME="ngs"
Prompt でも綺麗に表示できています。