初心者でもできる！zsh＋zplugの導入


## 動機
せっかく新しいMacBook proを買ったので、よりスマートな環境が欲しい！
調べているうちに、シェル環境では「**zplug**」がなんだか**高速で、シンプル**という情報を得て、導入を決定。

#### 環境
・MacBook Pro (13-inch, 2018) 
・macOS Mojave 10.14.6
・Homebrew 2.1.11

## zshとは？
zshはbashの拡張版らしく、コマンドの補完機能等がbashよりも発達していて人気が出ている。

## zplugとは？
zshを管理するためのプラグインマネージャー(プラグイン→テーマ、補完機能などの管理)。
[作者の方のQiita](https://qiita.com/b4b4r07/items/cd326cd31e01955b788b)にも書かれていますが、「**とにかく楽する**」ためにzplugは作られたそう！
スバラシイ！

## メリット
[公式](https://github.com/zplug/zplug/blob/master/doc/guide/ja/README.md)より抜粋
>
- 何でも管理できる
- 高速インストール・高速アップデート
- 遅延読み込みに対応
- リビジョンロック(ブランチやタグを固定する機能)
- post-update 等のフック機能
- パッケージ間の依存管理
- antigen とは違って、*.plugin.zsh を必要としない
- 対話的インターフェイス(fzf, peco, zaw など)
- キャッシュ機能による読み込み高速化 (起動時間)

## zshの導入
いよいよ本題です。
zshは、homebrewで導入します。

```
$ brew install zsh
```

zshの環境変数を通すための、ファイルを編集

```
$ sudo vi /etc/shells
```

下記を追記。

```
/usr/local/bin/zsh
```
<img width="425" alt="スクリーンショット 2019-09-27 8.05.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286816/364b0ef6-ca38-4ff0-ff82-918346fdaa16.png">

下記を記述し、デフォルトのシェルを変更。
これでbashとサヨナラです！

```
$ chsh -s /usr/local/bin/zsh
```

## zplugの導入
公式を参考に、下記でインストール。
※brewからインストールする方法もあるが、私は上手くいかなかった。

```
$ curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh
```

次に、`$ vim ~/.zshrc`で、.zshrcに下記を記述。
### これが私の.zshrcだっ！！(プラグインの説明付きです。)

```
# zplug
source ~/.zplug/init.zsh
zplug 'zplug/zplug', hook-build:'zplug --self-manage'
# 非同期処理できるようになる
zplug "mafredri/zsh-async"
# テーマ(ここは好みで。調べた感じpureが人気)
zplug "sindresorhus/pure"
# 構文のハイライト(https://github.com/zsh-users/zsh-syntax-highlighting)
zplug "zsh-users/zsh-syntax-highlighting"
# コマンド入力途中で上下キー押したときの過去履歴がいい感じに出るようになる
zplug "zsh-users/zsh-history-substring-search"
# 過去に入力したコマンドの履歴が灰色のサジェストで出る
zplug "zsh-users/zsh-autosuggestions"
# 補完強化
zplug "zsh-users/zsh-completions"
# 256色表示にする
zplug "chrissicool/zsh-256color"
# コマンドライン上の文字リテラルの絵文字を emoji 化する
zplug "mrowa44/emojify", as:command
# Install plugins if there are plugins that have not been installed
if ! zplug check --verbose; then
  printf "Install? [y/N]: "
  if read -q; then
    echo; zplug install
  fi
fi
# コマンドの履歴機能
# 履歴ファイルの保存先
HISTFILE=$HOME/.zsh_history
# メモリに保存される履歴の件数
HISTSIZE=10000
# HISTFILE で指定したファイルに保存される履歴の件数
SAVEHIST=10000
# Then, source plugins and add commands to $PATH
zplug load
```

書き換えた後、`$ source .zshrc`で読み込む。
プラグインをインストールするか聞かれるので、「y」を打ち込んでインストール！(または、`$ zplug install`)
※プラグインは入れすぎると重くなるので注意です。


プラグインを追加する場合も、
1. .zshrcに追記
2. `$ source .zshrc`
3. 「y」を打ち込む！
でOK！

**これで終了！**

## 感想
zshはこれまでoh my zshを使っていたが、今回「zplug」を知り、カスタマイズ性の高さに驚いた。
今は「zplugin」や「prezto」などのプラグインマネージャーなども人気なようで、まだまだ奥深い世界のようだ。

また導入に際してつまづいた、

- [bash使用時にインストールしたrubyのバージョンが、zsh導入後反映されない](https://qiita.com/tatsugon14/private/85ef168e7dbbaee3a055)
- [Rubymine(IntelliJ IDE)へのzshの適用](https://qiita.com/tatsugon14/private/48849af8c07c3bfb13d9)

は、別記事にまとめました。

## 参考にした記事

以下の記事を参考にさせていただきました。ありがとうございました。

- [おい、Antigen もいいけど zplug 使えよ](https://qiita.com/b4b4r07/items/cd326cd31e01955b788b)
- [zplugの導入 oh-my-zshのような設定にするまで。](https://qiita.com/Jung0/items/300f8b83520e56766f22#_reference-d941ba24d1f3953e9789)
- [Web系だけど.zshrc晒す] (https://qiita.com/Hibikine_Kage/items/61711d5e3d3d5f572f9f)
- [もっと便利になれる zsh プラグインによる CLI ライフ](https://qiita.com/b4b4r07/items/f37aadef0b3f740e8c14)
- [zplugの導入 oh-my-zshのような設定にするまで。](https://qiita.com/Jung0/items/300f8b83520e56766f22#_reference-d941ba24d1f3953e9789)
- [Unix :: zsh / HISTFILE , HISTSIZE , SAVEHIST](http://tm.root-n.com/unix:zsh:histfile_histsize_savehist)