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 -2256 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 でも綺麗に表示できています。

comments powered by Disqus