卍 ZshとPreztoで使いやすくてDQNなターミナル環境を構築をする 卍

# 卍 はじめに 卍
この記事は [N高等学校 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/n-highschool) の22日目の記事です。

こんにちは。普段はGoを使ってwebアプリ作ったりインターンをしたりしてるN高一年の人です。
プログラミングを始めて半年くらいの初心者です。
本当は真面目にGoの入門記事書こうと思ったんですが、いつの間にか担当日前日になっていて「書けねえ...」となったので今日思いついたネタで記事を書きます。お願いします。

# Preztoってなに？
PreztoはZshをいい感じにしてくれるフレームワークです。

**決してターミナルをDQN仕様にするフレームワークではありません。**

この記事で唯一ためになる要素がPreztoと言えます。

Preztoには様々なモジュールが用意されており、それらに関連したコマンドが快適に使えるようになります。

例えばDockerモジュールだと `docker images` コマンドが `dki` で実行できたり、
`docker run -it --rm <コンテナ名> /bin/bash` コマンドが `dkRe <コンテナ名>` で実行できたりするエイリアスが設定されています。
<img width="338" alt="スクリーンショット 2019-12-22 1.51.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454193/30c3eab1-ca32-2ab3-460d-23540f170838.png">
その他にも上の画像のようにカレントディレクトリのパスが表示されるようにしたりGitの現在のBranchが表示されるようにしたりすることができます。
他にも色々な便利機能があるので気になる方はググってみるといいかもしれません。

# インストール
## Zshのインストール
「Bash使ってるんだけどDQN仕様にしたいからZshにするね」という方はZshのインストールからお願いします。もうZshを使っている方も念のため再インストールした方がいいかもしれません。これもDQNターミナルに進化するには必要な過程なのです。

Macの場合
`brew install zsh` からの `chsh -s /usr/local/bin/zsh` でターミナルを再起動するといけるかと思います。
もうインストール済の場合は `rm ~/.zshrc` からの `brew uninstall zsh --force` からのインストールでいけるかと思います。
インストール済の方はzshrcのバックアップをしないと面倒なことになるので忘れずに。

ここではWindowsとLinuxの説明は省かせていただきます。筆者がMacユーザー＆担当日当日の深夜に執筆しているということを踏まえ、ご容赦ください。

MacOSでしか試してないのでその他のOSでは不具合が生じるかもしれませんが、適当にググればいけると思います。
自分で調べて実行することもDQNターミナルへの道を進んでいくには必要なのです。

## Preztoのインストール
やっと本記事の主役Preztoさんのインストールに入ります。

ターミナルで

 ```sh
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
``` 
を実行してください。これだけです。

インストールが完了したら次は設定ファイルを生成します。

```sh
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```
これをターミナルで実行するだけで設定ファイルが生成されます。簡単ですね。
一旦Zshを再起動させたりしてみるといつもと違うターミナル画面が表示されていたら成功です。

しかし、おそらく文字化けを起こしていると思います。標準フォントではないフォントが使われているためです。
なので新たにフォントをインストールします。

```sh
# clone
git clone https://github.com/powerline/fonts.git --depth=1

cd fonts

# install
./install.sh

cd ~

# clean up
rm -rf fonts
```
ターミナルの環境設定から新たにインストールした `ProFont for Powerfont` というフォントを選択して文字化けが治ったら成功です。

これで一通りのインストールが終わりました。

モジュールを追加してエイリアスをバンバン使っていきたいよーという方は `~/.zpreztorc`の30行目付近にある

```
 zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'prompt' \
  'docker' \ #new!!!
```
ここにモジュール名を追加するとエイリアスが使えるようになります。

どんなモジュールがあるかと、その使い方はREADMEに書いてあるので[GitHub](https://github.com/sorin-ionescu/prezto/tree/master/modules)を参考にしてください。

ここからが本編です。
普通の記事ならここで終わりですが、この記事ではここからが本編です。

早速カスタマイズに入っていきましょう。

# カスタマイズ

## テーマ

まずはテーマを選びましょう。
Preztoには多くのテーマがあり、それが各々のターミナルの一番の個性となるといっても過言ではないでしょう。
ターミナルで `prompt -p` を実行するとプレビュー付きでテーマ一覧が表示されます。

↓こんな感じ
<img width="622" alt="スクリーンショット 2019-12-22 3.07.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454193/b6b9a050-9fef-7210-d5a4-7e4bbe88f350.png"> 
theme: の前に書かれたsorinなどがテーマ名です。
`prompt -p <テーマ名>` でそのテーマのプレビューができます。

自分の好みのテーマが見つかったら、次はそれを適応させます。

`~/.zpreztorc` の115行目周辺にある

```
zstyle ':prezto:module:prompt' theme 'powerline'
```
という行のthemeの後ろにあるシングルクォーテーションの中に任意のテーマ名を書くことで適応させることができます。
筆者はpowerlineというテーマを使っています。

保存してZshを再起動させるとテーマが適応されているかと思います。されていない場合は `source` コマンドを使ったりするとうまくいくかもしれません。

ターミナルに個性がついてきました。
次は色を調節していきます。

## カラー

テーマを変更したことでターミナル個性がついてきましたが、色をカスタマイズすることであなたのターミナルは唯一無二の存在へと進化することでしょう。

ターミナルの環境設定のANSIカラーを変更することで自分専用の色に変更することができます。
↓赤で囲った場所
<img width="662" alt="スクリーンショット 2019-12-22 4.05.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454193/f1c25c76-1d20-5cb8-9d2b-6d47b4e85d45.png">
よりDQN感を出すにはビビットな色に。
特にシアン・レッド・ピンクの原色に近い色などに設定すると視認性が下がり、よりDQN感がでると思います。

↓筆者のターミナル
<img width="1435" alt="スクリーンショット 2019-12-22 4.42.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454193/f8176a7a-d497-9362-bbea-342445658c77.png">

この他にも背景画像を設定したり、通常テキストの色を変えてみたりするとおもしろいと思います。
ただし視認性が下がりまくるので1日楽しむくらいがちょうどいいかと思います。

ちなみに視認性の低さとDQN度は比例します。

# あとがき

「DQNとはなんだろう」「というかこれPrezto使う必要なくね？」とか考えながらこの記事を書いていました。

タイトル詐欺なのかそうではないのか、そもそもDQN感ってなんだよとかは置いておいて、とりあえずZshを使う上で便利なPreztoを紹介できてよかったです。

今度はGoの記事も書こうと思うので、そのときもよろしくお願いします。

最後までお読みいただきありがとうございました。


###参考記事
- [preztoでzsh構築した時のメモ](https://qiita.com/Angelan1720/items/60431c85592fe90fcdd5)
- [Zsh + Prezto で快適コマンド環境を構築する](https://dev.classmethod.jp/tool/zsh-prezto/)
- [zsh & preztoのインストール （macOS)](https://qiita.com/rspepe/items/9e30e698c4fc3e90891d)