初心者向け！zshの導入からpreztoとpowerlevel10kの設定

最近オンラインで共同開発を初めてする中でチームメンバーが使っていたターミナル画面がカッコ良かったので、真似しようと思いやって見ました。基礎知識がなさすぎて時間がかかってしまったため、この記事ではくどいかもしれませんが、非エンジニア向けに書いた記事です。
なお、記事の内容はmacでiTerm2を使用しています。

#zshのインストール

###zshをインストール

```
 $ brew install zsh
```
###/etc/shellsにzshのパスを追記します。
その後パスワードを聞かれるのでパスワードを入力します。

```
$ sudo vi /etc/shells
```
###vimで/usr/local/bin/zshを追加
vimが起動するので以下の表示があることを確認してください。

```
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
```
最後の行に以下の文字列を追加します。
iを押す。insertモードになるため、文字入力が可能になります。
/usr/local/bin/zshを最終行にコピペ。
escを押すとinsertモードが解除されるため、:wqで保存して終了。
このようになっていればOK。

```
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh　
```
###ログインシェルを変更

```
$ chsh -s /usr/local/bin/zsh
Changing shell for test_user.
Password for test_user:
```
新しいターミナルのタブを開くと以下のようなメッセージが聞かれます。
内容は今までbashを利用していたので、以下のコマンドで~/.bash_profileをコピーして、~/.zshrcを作成しました。みたいな感じです。OKのためEnterで抜けます。
次回からは先ほど表示されたメッセージは出なくなります。

```
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses ---
```

###zshが適用できたか確認
Homebrewでインストールしたzshが使われているか確認します。

```
% TEST-USER% echo $SHELL
/usr/local/bin/zsh
```
以下のような表示になればzshのインストールは完了です。

#preztoをインストール
preztoとはzshの拡張機能パックです。
せっかくなので見た目にも変化をつけましょう！
以下のコマンドを実行します。

```
% git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
```
###設定ファイルを作成
preztoを設定するために以下のコマンドを実行します。

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

###preztoの設定ができたのか確認
こんな感じになっていればOK！
<img width="1023" alt="スクリーンショット 2020-02-23 10.43.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/5858c673-b9fe-feac-9507-fc5aec7a1d8a.png">


#powerlevel10k をセットアップする

preztoの表示カスタマイズ一覧を表示
preztoのかすタイズテーマの一覧が表示できます。
今回はpowerlevel10kをインストールするので確認する必要は不要ですが、他のメニューも見れるため、使い慣れてからみるとようかもしれません。

```
prompt -l
```

powerlevel10kに設定

```
prompt -s powerlevel10k
```

###yesのrecommendedを選択
Meslo Nerd Fontをインストールしますかと言うことですが、おすすめのフォントらしいのでとりあえずyを選択
<img width="545" alt="スクリーンショット 2020-02-23 11.10.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/bda15d0d-c097-207c-6342-b062c9d53c7c.png">

###yでiTerm2を再起動
続行するまえにiTerm2を再起動するか聞かれるのでyを選択します。
<img width="411" alt="スクリーンショット 2020-02-23 11.13.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/075370fa-fecb-f6e1-b104-2af0e22076e4.png">

###powerlevel10kをpreztoに適用させる。

```
% cd .
% vim ~/.zpreztorc
```
zstyle ':prezto:module:prompt' theme 'sorin'という基準があるため、その場所まで移動する。
結構下の方にあるから最初見つけられなかった。
insertモードにしzstyle ':prezto:module:prompt' theme 'sorin'をコメントアウト（#をつける。）
以下の術をコピペ
escでinsertモードを解除し、:wqで保存して終了。

```
zstyle ':prezto:module:prompt' theme 'powerlevel10k'
```
完成系はこれ↓
<img width="454" alt="スクリーンショット 2020-02-23 12.59.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/2fc83c24-5e82-5b20-1ca9-d8c9f6635f53.png">

###質問に答え自分のテーマを決めていく。
一つ目は「このダイヤは見えるか？」という物だがこんなような質問がいくつかあった後に自分のテーマがどれが良いか４択くらいで聞かれるので、答えていくだけ。
rで戻ることもできるので試行錯誤してみよう！
<img width="795" alt="スクリーンショット 2020-02-23 13.00.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/37205507-3a97-1790-d278-17689cf6fcb7.png">

#筆者の最終的なターミナル画面
デザインは使っていく中で変更して行こうと思いますがとりあえずこんな感じで変更できました。
<img width="789" alt="スクリーンショット 2020-02-23 13.27.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/c580b168-02d7-ada5-10fe-d68a8087ecf0.png">

#参考記事

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

- [zsh + prezto + powerlevel10k で VS Code のターミナルをかっこよくする](https://qiita.com/takahito0508/items/cf820e49b63aea11cd52)

- [powerlevel10k](https://github.com/romkatv/powerlevel10k#prezto)

- [prezto](https://github.com/sorin-ionescu/prezto)