bashからzshに乗り換えた話

この記事は、 OIT Advent Calendar 2017の2日目の記事です。

前置き

元々OIT Advent Calendarに弊学の梅田キャンパスを「がっこうたんけんした話」を書くつもりでしたが外が寒くてダメでした.何か記事を書くネタを考えたところ最近zshを使い始めたのでそのことを書くことにしました(偶然にも2日連続シェル環境の記事になった).

dotfiles

最初に貼っておくとdotfilesは以下にあります

github.com

Docker

また以下のコマンド群をコピペするだけで僕のzshを試せます!

docker run --rm -it odanado/zsh zsh
./install.sh && ./deploy.sh
source ~/.zshenv && source ~/.zshrc

動機

周りに影響されてfishを触ってみたところ,デフォルトで入っているauto suggestion機能がとても便利に感じました.ほぼ何もカスタマイズされてないbashで作業をするのは目に見えない時間を失っているようで嫌だったので,bashを辞めることを決意しました.
乗り換えるshellを選ぶ上で前から気になっていたzshと,周りの人が使っているfishで悩みましたが,zshの方が色々カスタマイズできてネット上に情報が多そうだったので,zshを選びました.

プラグインマネージャ

まず最初にプラグインマネージャを選びました. Preztooh-my-zshAntigen などもありましたが, zplug がいいとの情報が多かったので zplug を選択しました.後述しますが実際使ってみて最高でした

インストールしたプラグイン

zsh-users系

目についたやつを入れていきました

peco

pecoはリアルタイムgrepみたいなコマンドです.GO言語で実装されていて厳密にはzshプラグインというわけではないんですが, zplug だとこういったものも zplug "peco/peco", as:command, from:gh-r でインストールすることが可能です.この柔軟性が最高だと思いました.

ghq

これまでは ~/git 以下にひたすらgit cloneしたリポジトリを集めてましたが,ghqを使えば管理が楽になります.これも zplug を使って zplug "motemen/ghq", as:command, from:gh-r でインストールできます.

anyframe

pecoと連携するためのプラグインです.ほしい関数が用意されているので使うのにキーバインドやaliasを設定するだけで使えるようになって便利.

powerline

ターミナルのステータスバー?をかっこよくするやつ. zplug は他人のzshファイルを読み込むこともできて, zplug "powerline/powerline", use:"powerline/bindings/zsh/powerline.zsh" でインストール可能です(ほんと最高). デフォルトのconfigだとかっこいい三角形を表示するためにpowerline用のフォントをインストールする必要があります.しかし三角形を表示するためにフォントをインストールのは大げさだと思い,configで"default_top_theme": "ascii" としています.他にも設定を弄って最終的にこんな表示になりました. f:id:odan3240:20171202222956p:plain

その他設定

ヒストリ

どうやらデフォルトではヒストリを保存しないぽいので設定しました

export HISTFILE=${HOME}/.zsh_history
export HISTSIZE=1000
export SAVEHIST=500000
setopt hist_ignore_all_dups # 同じコマンドをヒストリに保存しない
setopt hist_reduce_blanks # 無駄なスペースを消してヒストリに保存する
setopt share_history # ヒストリを共有

ssh-agent関係

tmux内でもssh-agentが使えるように以下の記事の設定をコピペしました

qiita.com

CIとか

TravisCIとDockerを使ってgithubにpushされるたびに,zplugでのプラグインのインストールが成功することと,zshenv及びzshrcの読み込みが成功することをテストするようにしました.本当はちゃんど動作するところまでテストしたいと思っていましたが方法がわからず,ないよりマシの精神でインストールとロードまでをテストしています.この辺の知識がある方がいれば教えていただきたいです(あとneovimの起動もテストしたい).

おわりに

bashからzshに乗り換えてインストールしたプラグインや設定を紹介しました.今回zshに乗り換えたことでシェル環境の快適度が増して個人的にとても満足しています. zshにはこんな便利なプラグインがあるよ!とかこの設定書くと便利だよ!などの情報をお持ちの方はぜひ教えてください.