お前らのターミナルはダサい

この記事は[OthloTech Advent Calendar 2016](http://qiita.com/advent-calendar/2016/othlotech)の20日目の記事です。昨日は[_cheez](http://qiita.com/_cheez)さんの[【css】transform:matrix3dのちょっとしたお話](http://qiita.com/_cheez/items/17712c9aaa42fc43429b)でした。

これは釣りタイトルみたいなものなんで、すごい人は怒らずブラウザバックしてください。

どうもこんにちは、エンジニアと名乗るのはおこがましいレベルにはレベルが低いキンチキです。[OthloTech](http://www.othlo.tech/)のAdvent Calendarの記事ということで、僕はOthloTech主催の勉強会は結構参加しています。もちろんその他の勉強会にも参加することがあります。

そういう場で隣を見ると**学生のターミナルはイケてないことがマジで多い**ので、サクッとイケてるターミナルにしようって記事です。**見た目、大事。**

この記事は基本Macの話です。Windowsのコマンドラインのことなんか知りません。Linux使ってる人は自分で色々やっているでしょうから、僕が教えられることはありません。


## 見た目を気にする
エンジニアあるあるかもしれませんが、人が使ってるエディタやIDEといったツールって気になりません？ 僕はめっちゃ気になります。MacだったらDock、Windowsだったらタスクバーやデスクトップになにを置いているかも気になります。

僕はかなり形から入る人間でして、見た目をすごい気にします。自分や人の見た目ももちろんある程度気にしますが、僕がめっちゃ気になるのはエディタやIDEといった各種ツールの見た目です。

そんなわけで、勉強会行ったら隣に座ってる人の画面をちょこちょこ見るわけですよ。ツールはなに使っているのか、どんなテーマを使っているのかなと。そしてエンジニア向けの勉強会はエディタやIDEは当然で、コマンドラインを使うこともよくあります。



そこでですね、隣の人のターミナルを見ると...

![1.png](https://qiita-image-store.s3.amazonaws.com/0/130946/c6575b92-94e3-ff93-2e76-682a429df806.png)


**だっせえええええええええええええ！！！！！**


![2.png](https://qiita-image-store.s3.amazonaws.com/0/130946/f0063cec-0833-74e3-d5c8-a31225d4b8d5.png)


**ほげえええええええええええｗｗｗ！！！！！**


ダサい。なにがダサいってデフォルトのありえない背景白テーマがダサいからそれっぽい`Homebrew`や`Pro`に変えるだけで**「俺エンジニアですよ感」**出してるつもりなのがダサい。お前フォント見ろよ。`Monaco`はまだしも`Homebrew`の`Andale Mono`ってなんだよ。つーかそのフォントサイズをなんとも思わんのか。`Pro`の10ptとかマジで小さすぎて見辛いだろ。

![3.png](https://qiita-image-store.s3.amazonaws.com/0/130946/b9fff256-6b74-2329-12e4-e93955771616.png)


Macの標準フォントなら思考停止で`Menlo`使っときゃいいんですよ。デフォルトプロファイルのほとんどは`Menlo`になってるのにエンジニアっぽい`Homebrew`や`Pro`は違うフォントになってるのはAppleの悪意ですかね。変えましょう。

フォントは[Ricty](http://www.rs.tus.ac.jp/yyusa/ricty.html)など入れるのがオススメです。見やすいからモチベーションちょっと上がります。



##テーマを変えよう
**Macのターミナルのデフォルトプロファイルでまともなのものは無い**と僕は思っています。そこで背景や文字の色を自分好みに設定するってのは皆さん通る道だと思います。

それも悪くないのですが、あ、やっぱ悪いです。というか大体は微妙になってしまいます。こういうデザインに関することは、それが得意な人、素養がある人に頼るのが一番です。得意な人は「自分が作ったものを使ってほしい、自分のこそ美しい」とか思ってそうなので、作ったテーマを公開します。まあそんな理由で公開してるわけではないでしょうが、そんな理由の人も少しはいるでしょう。

公開されてるテーマはおそらくあなたが自作するよりずっと綺麗で見やすいです。しかも導入はすぐに終わります。オススメテーマは**[Iceberg](http://cocopon.me/blog/?p=4862)**です。というかググったらこれがすぐに出てきます。iTermを使っている方は[こちらからどうぞ](https://github.com/Arc0re/Iceberg-iTerm2)。

![5.png](https://qiita-image-store.s3.amazonaws.com/0/130946/95d21ec2-c1d8-e0ed-a4e1-7a7b27c45356.png)




青が良い感じですね。ダウンロードサイトもインポートの仕方も**[作成者の方のブログ](http://cocopon.me/blog/?p=4862)**に書いてあるので参考にしてください。テーマを探してると`Solarized`っていう超定番テーマを紹介してる記事が大量にヒットします。僕は`Solarized`が好きじゃなく、好きじゃないのを考慮しても`Iceberg`の方が良いと思います。

デフォルトのプロファイルは復元できるので全て消してOKです。あんなんこういう記事書くときにしか使いません。

![6.png](https://qiita-image-store.s3.amazonaws.com/0/130946/5146849a-2957-9810-85ab-e521637bff69.png)



ちなみにVimは`Hybrid`にしています。[iTermのVimの色を快適にした。（目に優しいデザイン）](http://qiita.com/mochizukikotaro/items/def041700846adb903fe)を思いっきり参考にしました。

![7.png](https://qiita-image-store.s3.amazonaws.com/0/130946/82cd834b-18c2-5f7f-f044-ff4e52786d9f.png)


完全に好みですが背景は半透明にするとカッコイイです。中二病をくすぐられます。ターミナルの場合は`環境設定>プロファイル>背景>不透明度`で変えられます。ブラーっていうのが高いとボヤケます。どちらもお好みの強さにしましょう。

![8.png](https://qiita-image-store.s3.amazonaws.com/0/130946/a253ed1e-511c-f056-444d-54f0d3259797.png)


![9.png](https://qiita-image-store.s3.amazonaws.com/0/130946/614f475c-56e4-16a5-06c6-f809202518af.png)




##シェルも変えよう
ほとんどのUnix系OSのログインシェル（デフォルトのシェル）はbashです。別にbashはダメではなくカスタマイズすれば使いやすいのでしょうが、そんなことするならとっととzshや[fish](https://fishshell.com/)に変えましょう。

技術力があるエンジニアはzshを使ってる人が多い印象です。めちゃ便利ですよzsh。僕はシェルに詳しいわけでも技術力があるわけでもないですが、それでもzshは超絶便利だと思わせてくれます。

**正直使いやすかったらシェルなんてなんでもいい**と思っていますが、使いやすくしやすいのがzshやfishという印象です。


せっかく見た目がイケてるようになったら、その中身のシェルもイケてるものを使いたいですよね。ということでbashからzshに移行しましょう。以下のコマンドでログインシェルをzshに変更します。多分パスワード聞かれるのでMacのユーザーパスワードを入力してください。

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


もしHomebrewで新しいzsh入れて使いたい場合、まずHomebrewのデータを最新にしてから普通にインストールします。

```
$ brew update
$ brew install zsh
```

Macは`--disable-etcdir`オプション付けた`brew install --disable-etcdir zsh`でインストールしないとパスがどうのこうのと問題あるらしいのですが、僕はオプション無しでインストールしてなにも困ってないです。

インストールしたら`/etc/shells`にzshのパス`/usr/local/bin/zsh`を追加します。VimでもEmacsでもnanoでもリダイレクトでもなんでもいいです。

```shell:/etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
# 追加
/usr/local/bin/zsh
```

そしてログインシェルを変更します。

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


ターミナルを再起動すればzshが起動しています。



##プロンプトも変えよう
これはMacのbashのデフォルトのプロンプトです。
![10.png](https://qiita-image-store.s3.amazonaws.com/0/130946/c81564cf-58ef-fa62-34c8-6148ac6292bf.png)

**だっせえええええええええええええ！！！！！**
**つーかみづれええええええええええ！！！！！**

え、なにこれ。意味がわからん。デフォルトがこれってシェルのデフォルト設定決めたAppleのエンジニアのセンス疑うわマジで。

カレントディレクトリは必要です。その左、**こいつはいったいなんなんだ。こんな情報誰が必要なんだ。**コンピュータ名とかローカルではマジでいらないんですが。というかユーザー名もMacのログインユーザーのときはいりません。必要な人はいるんでしょうが、ローカルPCでは少数派な気がします。

あと出力（コマンドの結果とか）とプロンプトの間に一行欲しいです。非常にわかりづらいです。Windowsのコマンドプロンプトはデフォルトで一行空いてますよね。あれにしたいです。

プロンプトのカスタマイズは普通にシェルの設定ファイルに書けば好きなようにできます。でも僕はほとんど調べたことないのでわかりません。自分でカスタマイズしたい人は調べてください。

で、僕はテーマと同様に誰かが作ってくれた**[pure](https://github.com/sindresorhus/pure)**っていうイケてるプロンプトを使っています。

![11.png](https://qiita-image-store.s3.amazonaws.com/0/130946/e00fc24f-027b-cd61-0c96-8d89779f4422.png)


二行プロンプトですね。出力とプロンプトに一行空きがあるため大変見やすいです。また、カレントディレクトリ（のパス）とGitの情報以外は多分表示されないです。無駄な情報が無いって良いですね。

僕は`pure`だけを入れて使っているのではなく[Prezto](https://github.com/sorin-ionescu/prezto)というフレームワークの設定で`pure`を使用しています。僕はシェルに詳しくないのですが、`Prezto`や[oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)を導入するだけで簡単にそこそこ快適な環境ができあがります。コマンドライン初心者は、まずフレームワークを入れて、慣れたら自分でゴリゴリカスタマイズするのがいいかなと。

ということでサクッと`Prezto`を入れてプロンプトを`pure`にしましょう。zshが起動している状態で以下の二つのコマンドとシェルスクリプトを入力してターミナル（zsh）を再起動すればOKです。

```
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

再起動した時点でプロンプトがかなり変わっています。tabの補完も大分変わっています。あとは`~/.zpreztorc`のプロンプトのテーマをpureにするだけです。`:prezto:module:prompt` で検索して、プロンプトの設定場所を探してください。

`zstyle ':prezto:module:prompt' theme 'sorin'` の `theme` の箇所を `pure` にします。

```zsh:~/.zpreztorc
#
# Prompt
#

# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'pure'
```

ついでに補完とシンタックスハイライトのモジュールも有効にしておきましょう。設定場所はファイルの最初の方にあります。

`'syntax-highlighting' \` と `'autosuggestions' \` を `'prompt' \` の上に記載するだけです。なにかの理由で `prompt` の上に書かないといけなかった記憶があります（気のせいかも）。


```zsh:~/.zpreztorc
# Set the Prezto modules to load (browse modules).
# The order matters.
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'syntax-highlighting' \
  'autosuggestions' \
  'prompt' \
```

最後に編集した`.zpreztorc`を以下のコマンドで読み込むかターミナルを再起動すればOKです。

```
$ source ~/.zpreztorc
```

preztoのモジュール一覧と説明はGitHubの[prezto/modules](https://github.com/sorin-ionescu/prezto/tree/master/modules)で確認できます。

[autosuggestionsのREADME](https://github.com/sorin-ionescu/prezto/tree/master/modules/autosuggestions)によると`autosuggestions`は`syntax-highlighting`の後に記述されていないとダメらしいです。

> If this module is used in conjuncture with the syntax-highlighting module, it must be loaded after it.
If this module is used in conjuncture with the history-substring-search module, it must be loaded after it.


`autosuggestions`の補完はテーマによっては超絶見辛いので注意してください。

`Prezto`のインストール方法は[僕のブログ](http://kinchiki-it.hatenablog.jp/entry/build-command-line-environment-mac-2)でXcodeの導入からRictyの入れ方までかなり詳しく説明しています。ただし、様々なことを説明しすぎてかえってわかりづらいかもしれません。基本コマンドもよくわかっていない...黒い画面怖い...って人にはオススメです。


zshは`Prezto`や`autosuggestions`以外にもたくさんのプラグインがあります。[mollifier](http://qiita.com/mollifier)さんの[zshの外部プラグインまとめ](http://qiita.com/mollifier/items/1220c0eeaa93e82f8afc)という記事で非常に見やすくまとめられています。ぜひご覧ください。



##おわりに
たったこれだけの作業でターミナルがかなりイケてる感じになったかと思います。モチベーションが上がったり、周りからどう見られるかだったりと、やはり見た目は大事だと僕は考えています。

できるだけ**自分も**ツールもイケてる見た目にしていきましょう！ 特に自分の見た目には気を使わないと**「これだから情報系のキモオタデブコミュ障ニートは…」**となってしまい自分が属している分野自体の評価が下がりかねませんからね。

明日は[ryota_m1020](http://qiita.com/ryota_m1020)さんの**彼女がいないなら創ればいいじゃない．人工彼女を創るためのAI入門**です。レベル高そうですしなにより面白そうですね。お楽しみに。

**ターミナルの見た目とか人工知能とか正直どうでもいいから僕に彼女をください。**