Windows Terminal + git bash は見た目と操作感のバランスがいいよって話

普段は Windows メインで Unity 開発しているのですが、
やっぱり iOS の関係から Mac での開発も避けられません。
ssh でログインする AWS 上のサーバは Linux だったりします。

そうしたときにできる限り差を感じずに開発したいと考えていて、
ターミナルをどうするか迷って考えた結果の話です。

# TL;DR
現時点では Windows Terminal + git bash がベスト（楽）だと思っています。
（git bash は Source Tree についてくるのをそのまま使っています）

## こんな感じに使えます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506075/c045741f-aae2-10ed-9c54-f8bb144f17f8.png)

# 経緯と理由と問題点
## 経緯
1. mac では Iterm2 を使っていて、zsh で使用しているし、見た目も見やすくしている
2. だから Windows でも zsh を使いたいし、見た目も変更したい
3. この "[Windows Terminal + WSL 2 + Homebrew + Zsh](https://qiita.com/okayurisotto/items/36f6f9df499a74e62bff) " を見つけて、zsh で Homebrew も使えるなんて最高じゃん。これしかないと思って環境構築。
4. 少し使っていいなと思っていたところで、adb コマンドで詰まる。
5. [解決策](https://kzmmtmt.pgw.jp/?p=2290)はあるが、Unity の android 環境で開発しているので、対応がしんどい。
6. あきらめて git bash にすることにした。

です。

## Windows Terminal + git bash がベスト（楽）な理由
* Power Shell、コマンドプロンプトもあるものの、Mac と総合運用を考えたときに楽
  * shell の内容：同じシェルでなくても mac とある程度揃えられます
  * コマンド：悩まず、すぐ grep、ssh、curl ができます
* ubuntu などを入れて使うのに対して、adb コマンド使うのも楽
  * あくまで linux ライクなだけなので、exe をキックしているので Windows との親和性が高い
* git bash 単体で使用するのに対して、フォントなどのカスタマイズが楽

## そして問題点もある
ubuntu を諦めたがために・・・

* zsh 使えない
* Homebrew 使えない

# カスタマイズ内容
私自身は Source Tree に付属している git bash をそのまま利用しています。
そのため git bash だけを利用している場合と修正箇所が異なります。

## フォントと色
Mac の Iterm2 で Iceberg というカラーテーマを使っているのでこちらもそうしています。
ちょっと柔らかい感じがするのが特徴で気に入っています。

### 設定方法
1. Windows Terminal を起動した状態で `Ctrl` + `,` を押すと setting.json が開くので編集していきます
2. まず "schemes" に色の設定を入れていきます（[こちら](https://qiita.com/tatsuki1112/items/4e926f911c411564b33c) を参考に）
3. その後は "profiels" の "defaults" に設定を入れればOKです（共通箇所なので git bash だけでもOK）
4. フォントは[こちら](https://wesbos.com/programming-fonts)を見て "Consolas" を使っていて、サイズは少し小さめの 9。

```json
    "profiles": {
        "defaults": {
            "colorScheme": "Iceberg",
            "fontFace": "Consolas",
            "fontSize": 9
        },
```

## SourceTree 付属の git bash の設定箇所
* `~` に .bashrc とかを置いて mac と同じ設定を書けば、同じように使えるはずです。
  * 私は Mac が zsh なので、必要そうなところ（alias）だけをピックアップしています。
* `~/AppData/Local/Atlassian/SourceTree/git_local/etc/profile.d/git-prompt.sh` を修正することで、プロンプトの見た目を変更できます。
  * なるべくすっきりタイプです（マシン名とかいらない派）
  * git ブランチを右に持っていきたいができなかった。。。ので、(branch name) で表示
  * ちょっと愉快な感じで絵文字プロンプトにしています

```bash
        PS1="$PS1"'\n'                 # new line
        PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
        PS1="$PS1"'\w'                 # current working directory
        if test -z "$WINELOADERNOEXEC"
        then
                GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
                COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
                COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
                COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
                if test -f "$COMPLETION_PATH/git-prompt.sh"
                then
                        . "$COMPLETION_PATH/git-completion.bash"
                        . "$COMPLETION_PATH/git-prompt.sh"
                        PS1="$PS1"'\[\033[36m\]'  # change color to cyan
                        PS1="$PS1"'`__git_ps1`'   # bash function
                fi
        fi
        PS1="$PS1"'\[\033[0m\]'        # change color
        PS1="$PS1"'\n'                 # new line
        PS1="$PS1"'👉 '               # prompt
```


# おまけ
* Unity + Rider で開発しているので、C# 周りはキーボードバインドとRiderである程度解決できています。その話はまた別に。