まだ令和にもなってtigでu連打してんの？（Fisher用プラグインbreeze）

# まえがき

fish shell使ってる用記事なので、bashとかzshとかの昭和シェル使ってる人は読まなくていいです。
(https://github.com/scmbreeze/scm_breeze)

昭和時代の`zsh`から平成時代のシェル`fish-shell`に移行した。(今は令和だが・・:relaxed:)
理由はshellの環境作るのが面倒くさいのと、平成時代のシェルのfish shellの方が記号が読みやすそうなので。
zshは`^`をわざわざエスケープするの面倒だしそもそ1900年代で古い。

移行したいが、gitの便利コマンドラインツール[SCM Breeze](https://github.com/scmbreeze/scm_breeze)がfishに対応していなかった。
zshとかbashでしか出来ないのでが中々移行できずに困ってた。

`tig`で`u`連打やGUIツールとか（例えばSourceTree）でチェックボックス連打するのもだるい。

仕方ないので作ることにした

![breeze.png](https://qiita-image-store.s3.amazonaws.com/0/11951/42e0c0e7-84af-9853-54c8-a09f16ec17c3.png)

[breeze](https://github.com/shinriyo/breeze)だ！:ok_hand_tone1:

Microsoftの社訓みたいに「Eating your own dog food（自分のドッグフードを食べる）」
事ができそうだ。

*SCM Breeze*のscmの意味も知らないしbreezeの名前の由来はわからないので、
そのまま何も考えずにbreezをパクった。

# インストール

fishermanある前提で、

```
fisher shinriyo/breeze
```

まだバグが有ったり、対応していないものがるが、よろしく。:man_tone1:

# 使い方

## gs

`git status`のショートカット版コマンドで。

```
gs
```

するとこんなふうに`[0]`のような数字が出るのがおわかりだろうか？

<img width="353" alt="Screen Shot 2017-01-29 at 6.08.33 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/4124b71d-9e21-7809-ca5a-a674611a0f9f.png">

その数字で指定するのだ。

## ga

`git add`のショートカットコマンド`ga 数字指定`

それを`gs`(`git status`)で確認するとあら不思議、コミットすべきもの(ステージング対象)に含まれましたね。

<img width="371" alt="Screen Shot 2017-01-29 at 6.09.49 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/ca8da8ee-bced-0965-d5ed-98ed839d692d.png">

数字指定はいくつかバリエーションが有り、`ga 1-3`とやれば`[1][2][3]`も指定できる。
例えば1~10の数字の中で5だけ含めたくないような歯抜け指定の場合は`ga 1-4 6-10`とするよ。

## gcmsg

あとは`git commit -m`のショートカットコマンド`gcmsg コメント`とかでコミットできる。

<img width="438" alt="Screen Shot 2017-01-29 at 6.11.42 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/423edaa2-4b96-4549-6240-aaa3d1b2c645.png">

# すごいところ

## 変な名前のファイルもaddが楽

`--`というファイルを`git add`をしようとするとエラーになるけど、

<img width="375" alt="Screen Shot 2017-01-29 at 6.13.34 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/84f27bd5-ff7f-e3ef-de55-19010e5f0ba4.png">

`ga 数字`なら大丈夫。

<img width="402" alt="Screen Shot 2017-01-29 at 6.15.26 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/f557c84f-1667-b702-4c8d-40e8f3d07f25.png">
※内部では`--`を単純に`./--`に置換してるだけｗ

## 本家SCM Breezeにないgitコマンドがある

### gurl                                                                                          

originを設定してたらURL見られます。

<img width="299" alt="Screen Shot 2017-01-29 at 6.38.42 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/5a6d0545-d1da-fae1-ca62-4cc30450b057.png">

`gopen`でそのままブラウザで開く機能もあり。

## 本家SCM Breezeにないテンプレ作成機能がある

`mkpy 関数名`でこんなのが出来る。

<img width="381" alt="Screen Shot 2017-01-29 at 6.40.35 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/eea79a85-ac0d-ed3d-69a1-09c25290bf12.png">

`mkgo`とか`mkrb`とかもあるよ。`mkphp`と`mkperl`は無いよ。
ほしければ作ってプルリクしてね。

今後gitに関係ないのは`breeze`から分離するかもしれませんが・・・・。

→ こっちから外して、Mr.Makel(ミスターメイケル)に移行しました。

https://github.com/shinriyo/mrmakel

# プルリク

まだバグが有ったり、`git status --porcelain`コマンド時に
以下のステータスのものは意味がわかってないのでまだ未対応。

```
DD
AU
UD
UU
AA
DU
R
```

なので、`functions/gs.fish`ファイルの`TODO: FIX LATER...`と書かているところを修正してプルリクしてね:v_tone2:

### mkfunc

`mkfunc 関数名`(make functionの略)という便利なショートカットでまだ実装されてないコマンドを高速テンプレート生成できるんで。

`functions`フォルダがあるカレントディレクトリで行ってね。

`functions`フォルダの中に`関数名.fish`が出来るぜ！

<img width="495" alt="Screen Shot 2017-01-29 at 6.35.59 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/4890bfce-a06d-ba99-8442-1b43d080fb62.png">

`functions`フォルダがあるカレントディレクトリで行ってね。

### 13カ国語にドキュメントを対応することにする。

~~なぜなら、13が素数だからだ。~~
なぜなら、fishermanのドキュメントが13ヶ国語だからね。:flag_ac::flag_ye::flag_ar::flag_jp::flag_kr:（国旗わからないのでデタラメｗ）
fishermanship（これを勝手に呼ばせてもらう:grimacing:）に則って、ドキュメント作るね。
僕は日本語と英語と韓国語しかわからないからまだ3カ国しかないけど・・。

`mkdoc`コマンドで13ヶ国語の空テンプレートが作成できる。
すでにファイルあったら、上書きされない仕組みがないので、
`gco 数字`で上書きを取り消そう。

いつか作ろうと思ってますが、直してくれたらプルリクしてね:point_up_tone4:

<img width="329" alt="Screen Shot 2017-01-29 at 6.28.29 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/11951/aaec364b-b748-a77d-4aae-8acacd801d0c.png">

`README.hoge.md`の`hoge`が国によってどうなるかがわかってないので、
間違ってたらプルリクよろしくね:relaxed: