iTerm, zsh, vimをかっこよくセットする

MacBookAirにシステムの不具合があったのでディスクフォーマットして対処。
いざバックアップしようとしたら「失敗しました」だと！？

残されたのはiCloudに残された書類のみ。
仕方ないので自力でセットアップしていく。

せっかくなので一つ一つ理解しながら進めていく。



#目標
OSX(Mojave10.14.3)しか入っていないまっさらな状態から、かっこいいターミナル、かっこいいVimを整えて、pythonとC++を実行できるようにする。









#手順
* homebrewをインストール
* iTerm2を整える。
    * 1_インストール
    * 2_bashからzshにする
    * 3_zshrcの設定
    * 4_カラースキームの設定
    * 5_フォント「ricty」を入れる
    * 6_プロンプトを変える
* vimを整える
    * 1_vimrc
    * 2_カラースキームの設定
* gcc
    * 補足　エイリアスとシンボリックリンク
* Python
    * zshでanacondaを使う人はここで注意。
    * zshでanacondaを使えるようにするには？
    * 他のパッケージのインストール










#homebrewをインストール
[MacにHomebrewを導入する方法＆使い方まとめ](http://vdeep.net/intr-homebrew)
これに従ってインストールする。ちなみにあの重い重いxcodeのアプリを入れなくてもこのコマンドは実行可能。
`$ xcode-select --install`




#iTerm2を整える。

標準で入っているTerminalを使っていたのですが、色々なお話を見るにつれてどうやらiTerm2の方が何かといいらしいのでインストールすることに。
参考：[MacのターミナルアプリにはiTermがオススメ](https://qiita.com/k_saito/items/ab73032a82632af3cd3c)

以下のかっこよくする流れはこの記事を参考。
[お前らのターミナルはダサい](https://qiita.com/kinchiki/items/57e9391128d07819c321)




##1_インストール

1. [iTerm2のサイト](https://www.iterm2.com/)へ行き、zipファイルをダウンロード。場所はどこでも。
2. ダウンロードしたzipファイルをダブルクリックすれば展開され、本体が出てくる。
3. 本体を開くと「applicationに追加するか？」と聞かれるので「追加する(Move to Application Folder)」をクリック。するとApplicationフォルダにiTerm2が追加される。(ダウンロードフォルダにあるやつは消しちゃっておっけ)




##2_bashからzshにする
[初心者向け：Zshの導入](https://qiita.com/iwaseasahi/items/a2b00b65ebd06785b443)
こういう記事を見るとどうやらbashよりもzshがいいらしい。
この記事に従ってhomebrewでインストールできる。

ただこのままだとパスが通ってないって怒られる。
最終的にこれを`~/.zshrc`に書いたら治った。

```~/.zshrc
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
```
はて？これは一体何をしているんだ？

この二つの記事がとても分かり易かった。
[PATHを通すとは？ (Mac OS X)](https://qiita.com/soarflat/items/09be6ab9cd91d366bf71)
[PATHを通すために環境変数の設定を理解する (Mac OS X)
](https://qiita.com/soarflat/items/d5015bec37f8a8254380)




##3_zshrcの設定
[少し凝った zshrc](https://gist.github.com/mollifier/4979906)
これを~/.zshrcに書いてあげればとりあえずオーケー




##4_カラースキームの設定
人気のicebergにする。
https://github.com/Arc0re/Iceberg-iTerm2
これに従って設定すればオッケ。




##5_フォント「ricty」を入れる
rictyはプログラミングに特化したフォントで、とにかく見やすい。
下記を参考にインストールしていく。
[プログラミング用フォントRictyをMacにインストールする](https://qiita.com/segur/items/50ae2697212a7bdb7c7f)







##6_プロンプトを変える
[zshプロンプトのカスタマイズ](https://qiita.com/yamagen0915/items/77fb78d9c73369c784da)
この記事を参考に~/.zshrcのプロンプトの部分を書き換えればオッケ。
僕はこんな感じ

```~/.zshrc
PROMPT="
%{${fg[magenta]}%}[%n@%m]%{${reset_color}%} %~
$ "
```

こんな風に表示される
![スクリーンショット 2019-03-10 16.06.28.png](https://qiita-image-store.s3.amazonaws.com/0/362104/4ff93884-e0ee-b57f-5d8d-3f76a8ba2766.png)

スッキリした！

記号については[この記事](http://tegetegekibaru.blogspot.com/2012/08/zsh_2.html)を参考。

Fiはアカウント名、FiMacはPCの名前だ。
なんで両方表示させるかというと、ローカル開発環境やらラズベリーパイにログインした時居場所がわかった方がいいからだ。




#vimを整える

##1_vimrc
vimrcはこれをコピペ。
[何も考えず~/.vimrcにこれを書くんだ！ 〜vim初心者によるvim初心者のためのvim入門〜](https://qiita.com/morikooooo/items/9fd41bcd8d1ce9170301)
gvimrcってのはguiに関するところを扱うらしい。




##2_カラースキームの設定
vimのカラースキームもicebergにしたい。
[vimのカラースキーム (colorscheme) を "molokai" に設定する](https://qiita.com/godgarden/items/9bded65665834438cc3e)を参考にicebergを設定した。

まずホームディレクトリ(~)に`.vim`のディレクトリを作成。その中に`colors/`ディレクトリを作る。

```
$ mkdir ~/.vim
$ cd ~/.vim
$ mkdir colors
```

`.vim`にgithubからicebergをインストールする。
インストールしたら`iceberg.vim/colors/`にある本体`iceberg.vim`を`~/.vim/colors`にうつしてやる。

```
$ git clone https://github.com/cocopon/iceberg.vim/
$ mv iceberg.vim/colors/iceberg.vim ~/.vim/colors
```

仕上げに`~/.gvimrc`と`~/.vimrc`のカラースキームをicebergに変更してやれば完了。

```~/.gvimrc
" カラースキーム
colorscheme iceberg
```




#gcc
gccは最初からmacに入っているのだが、最新版が欲しい。
この記事に従って最新版をインストールする。
[Macのgcc, g++をHomebrewを使って最新版にする](https://qiita.com/wawawa/items/50c2c612b0937f28d92b)

##補足　エイリアスとシンボリックリンク
「エイリアス」「シンボリックリンク」という単語の意味がよくわからなかったけど、この記事で理解できた。

* [基本的かもしれないけどエイリアス(alias)とは](https://qiita.com/mizuki_takahashi/items/238e04fdc054ac38fcdf)
* [シンボリックリンクの使い方と落とし穴](https://qiita.com/go_astrayer/items/ab993cdc420d4f7f50d4)

`/usr/local/bin`にいくとファイル名の最後に`@`がついたファイルがいっぱいある。これはシンボリックリンクで、本体がある場所に紐づけられている。そしてこのリンク自体を本体と同じように扱うことができるのだ。
![スクリーンショット 2019-03-11 11.30.48.png](https://qiita-image-store.s3.amazonaws.com/0/362104/00100ea9-bfef-0488-355f-fdd639f52145.png)

一方で実行ファイルには`*`がついている。
![スクリーンショット 2019-03-11 11.31.13.png](https://qiita-image-store.s3.amazonaws.com/0/362104/ac35a79d-f181-6513-8e7c-e91c70dba62f.png)

これらの記号の説明は[ここ](http://www.media.ryukoku.ac.jp/seta/manual/old/ubuntu/faq/faq.html)を見ておくといい。


#Python
Anacondaをインストールしてしまえば必要なものはほとんど揃っている。
[Anaconda を macOS にインストールする手順](https://weblabo.oscasierra.net/python-anaconda-install-macos/)
python3系のバージョンをインストールする。

##zshでanacondaを使う人はここで注意。
上記リンクにも書いてある通り、Anacondaは`/anaconda３`にインストールされる。
そしてpathの設定も自動的に**.bash_profile** にやってくれるというのだ。

ん？今使ってるのはbashじゃなくてzshだぞ？ってことで、ただインストールしただけだとzshからanacondaを使うことはできない。

例えばpython3系のanacondaをインストールしたのにバージョンを確認したらpython2系だったりした時は、多分標準でmacに入っているpythonが表示されているだけなので以下の作業が必要だ。

```
[Fi@FiMac] /anaconda3
$ python --version
Python 2.7.16
```



##zshでanacondaを使えるようにするには？
インストールしたら`~/.bash_profile`を見にいく。

```
$ vim ~/.bash_profile
```
するとだいたいこんなのが書かれていると思う。
（おそらくバージョンによって違うのでちゃんと確認してね）

```~/.bash_profile
 1 # added by Anaconda3 2018.12 installer
  2 # >>> conda init >>>
  3 # !! Contents within this block are managed by 'conda init' !!
  4 __conda_setup="$(CONDA_REPORT_ERRORS=false '/anaconda3/bin/conda' shell.bash hook 2> /dev/nu    ll)"
  5 if [ $? -eq 0 ]; then
  6     \eval "$__conda_setup"
  7 else
  8     if [ -f "/anaconda3/etc/profile.d/conda.sh" ]; then
  9         . "/anaconda3/etc/profile.d/conda.sh"
 10         CONDA_CHANGEPS1=false conda activate base
 11     else
 12         \export PATH="/anaconda3/bin:$PATH"
 13     fi
 14 fi
 15 unset __conda_setup
 16 # <<< conda init <<<
```
ここには「pythonを使う時はanacondaのpythonを優先して使ってくださいね！」って命令が書かれている。
これをぜーんぶコピペして、`~/.zshrc`の好きなところに貼り付けて、保存。

sourceコマンドで`.zshrc`の内容を即座に反映

```
$ source ~/.zshrc
```
バージョンを確認してみると、うまくいっている。

```
[Fi@FiMac] ~
$ python --version
Python 3.7.1
```


###補足(2019/09/26)
最近この手順でセットアップをして、`$ source ~/.zshrc`を実行したタイミングで妙なものが出てくる。

```
$ python --version
Python 3.7.3
(base)
```

この`(base)`ってなんだ？

これはanacondaについてくるデフォルトのconda環境であるbaseが適用されていますよ〜というサインらしい。
先ほどzshrcに書いたコードの中には、baseをactivateする旨の記述がある。

例えば`$ conda deactivate`とすれば`(base)`は消え、python2系しか使えなくなる。

```
[FisMac] ~
$ conda deactivate

[FisMac] ~
$ python --version
Python 2.7.10
```

一方で`$ conda activate`とすれば`(base)`が現れ、python3系が使えるようになる。

```
[FisMac] ~
$ conda activate
(base)
[FisMac] ~
$ python --version
Python 3.7.3
(base)
```
詳しくはここに書いてある。
[Python japan condaコマンド](https://www.python.jp/install/anaconda/conda.html)



##他のパッケージのインストール
続いてanacondaについていないパッケージ(ぼくはpyglet, pymunk, vispy, keras,tensorflowが欲しいとする)インストールしたかったら以下のようにする。

```
$ pip install pyglet pymunk vispy keras tensorflow
```
パッケージがどこにインストールされているか見たかったらこうすればいい。

```
$ pip show pyglet pymunk vispy keras tensorflow
```
例えばtensorflowならこう表示される。

```
Name: tensorflow
Version: 1.13.1
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: opensource@google.com
License: Apache 2.0
Location: /anaconda3/lib/python3.7/site-packages
Requires: keras-applications, grpcio, six, protobuf, keras-preprocessing, numpy, tensorboard, tensorflow-estimator, termcolor, wheel, astor, absl-py, gast
Required-by:
```
この`Location`が場所なのだが、全部すごくありがたい場所に入ってくれている。


#おわりに
セットアップは大変。