zshのいいとこ、GIFアニメで見てみたい

# 前置き
業務でLinux、個人でMacを利用しているためCUIを多用しています。
シェルは`zsh`を使っているのですが、まわりを見ると `.bashrc`もいじらず`bash`を使っている方もまだまだ多い。

そんな`bash`しか使ったことない（そもそもコマンドシェルを変更したことがない）方に`zsh`の優れた点を紹介したいと考え、、社内発表しました。
その際にGIFアニメを作成したので、Qiitaでも公開します。

実際のプレゼン資料は以下になります。
http://budougumi0617.github.io/zsh-presentation/#/

操作方法などは以下をご確認ください。
**Reveal.js、Markdown、Githubでスライドを作成する。**
http://qiita.com/budougumi0617/items/19b19019bbe01f86e251

# `zsh`とは

- コマンドシェルの一つ。読み方は「ゼットシェル」
- コマンドシェルにはその他`bash`、`tcsh`などがあり、LinuxやMacの標準シェルは`bash`、
- `zsh`が機能が豊富すぎてマニュアルが全部読めないくらい長い
- 「`.zshrc`」が`zsh`版の`.bashrc`

# `zsh`が便利な所をGIFアニメで見てみる。
以下の紹介機能は、`oh-my-zsh`と`.zshrc`により実現しています。
具体的な設定方法の詳細は今回割愛しますが、環境設定は以下の通りです。

https://github.com/budougumi0617/dotfiles/blob/master/home/.zshrc
https://github.com/budougumi0617/dotfiles/blob/master/home/.oh-my-zsh-custom/mySetting.zsh
https://github.com/budougumi0617/dotfiles/blob/master/home/.oh-my-zsh-custom/myThemes.zsh-theme



## コマンドオプションは覚えなくても平気
コマンドオプションの補完を行おうとすると、コマンドオプションの意味、候補を羅列してくれます。
オプション、サブコマンドの入力途中に`TAB`キー押下でサブコマンドや「`-`」、「`--`」に続くオプション候補を表示します。
`.zshrc`に独自に作成したエイリアスもちゃんと候補に挙がります。
![command_reference.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/64c612d2-db8a-d8ae-ea7a-41e164fffdbc.gif)



##ファイル名の大文字小文字は覚えなくて平気
ディレクトリ、ファイル名は綴りだけ覚えておけばOKです。
ファイル・ディレクトリ名を`TAB`キーで補完する際に大文字小文字を無視して候補を挙げてくれます。

![upper_lower_autocomplete.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/15738da9-7e67-c1b6-4de4-20590d97c60f.gif)


##ディレクトリ名も覚えなくて平気
ディレクトリ名は頭文字だけ覚えておけばOKです。
`TAB`キーを押すことで補完されます。
※`z.sh`プラグインを利用すれば中間階層も覚えなくても良い。

`z`プラグイン
https://github.com/rupa/z
**z.shでよく行くディレクトリに手軽に移動する**
http://qiita.com/yoshikaw/items/38d3008ac7d0b19b4805



![move.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/a44e44dd-66c2-8bbd-e08c-dad546088693.gif)

## 編集したファイルを覚えておかなくても平気
コミット時、未コミットのファイル名を補完してくれます。
GIFアニメでは、`TAB`キー押下で他のディレクトリやファイルを無視して変更された`OperateDirectory.java`を補完しています。
![git_autocomplete.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/75f33fa8-4d99-e82f-b687-a38a2aa29d9d.gif)



## リモートブランチを覚えておかなくても平気
カレントディレクトリが構成管理中の場合はブランチ名をシェルの情報に表示させることができます。
例：`origin`ブランチから`gh-pages`に変更した場合
![branch_information.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/024d21f4-1859-e77d-d6b9-ec4bce6daf28.gif)



## makeのターゲットを覚えなくて平気
Makefile内からターゲットを探してくれるので、`make`コマンドのオプションを保管する際に候補に挙げてくれます。

例：「`all`」、「`ut_BasicFunction`」、「`clean`」ターゲットを設定した`Makefile`を利用した時。

![make_autocomplete.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/8ec7c94d-2fb4-1c9b-2dcd-8cab22732cba.gif)




## 「`echo $?`」しなくても平気
前回実行したコマンドが成功したかを表示させることが可能です。
`Make -j4`した際など、コマンドが成功したかわかりづらい時に重宝します。

例：「`cd`」に失敗したので、「`$`」が赤くなる。
![result_check.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/fdbd7344-197f-4a8c-053b-5c633e38c03f.gif)



## ローカルホスト名も覚えなくて平気
「`/etc/hosts`」のローカルホストを補完してくれるので、`ssh`や`scp`コマンドを叩く際に便利です。

例：「`ssh`」、「`ping`」で補完

![ssh_complete.gif](https://qiita-image-store.s3.amazonaws.com/0/20175/56dcd26d-d013-34dd-2dc3-80564199580f.gif)

今回は以上です。実はただGIFアニメ作りたかっただけです（）
そのうち`.vimrc`などの紹介もしたいと思います。

#参考

キャプチャを作成した環境情報は以下になります。
https://github.com/budougumi0617/dotfiles


GIFアニメは`LICECAP`を利用して作成しました。
http://www.cockos.com/licecap/
**簡単すぎてびっくり！チュートリアルがすぐに作れるGIFアニメフリーソフト**
http://naifix.com/gif-anime/