Windowsでかっくいいターミナルが使いたい！

![image](https://qiita-image-store.s3.amazonaws.com/0/57085/ec6cf5fe-6e44-ab9a-066f-f27773e5b9f2.png)

Windowsマシンで仕事してるけど家ではMac/Linux、みたいな場合、cmd.exeに哀しみを感じることが多々あります。

じゃあGit Bash使うかーとなるけどフォント微妙だし**タブ化できない**し、生のMinGWとかCygwinとかはよくわからんし…と思って結局Git Bashで頑張っていました。

しかし最近、よさげな解決策を聞いたのでそれについてまとめます。

- [ConEmu](https://osdn.jp/projects/conemu/)入れる
- [babun](http://babun.github.io/)入れる

## ゴール

Windowsマシンで

- UNIX系で
- タブ化できて
- 日本語でストレスフリーに標準入出力ができて
- ワクワクできる

コマンドライン環境を実現する。

## 手段1: ConEmu

1週間前までこっち使ってました。

[ConEmu プロジェクト日本語トップページ - OSDN](https://osdn.jp/projects/conemu/)からダウンロード、解凍。
好きなところに配置して起動すればOKです。
初回のみいろいろ聞かれるのでよしなに答えてあげてください。

あとは[Migu 1M](http://mix-mplus-ipa.osdn.jp/migu/)をインストールして設定してあげるだけ。
既存の各種コマンドラインを簡単にタブ化できちゃいます。

こちらは、cmd.exe、MinGW、GitBashなどさまざまなターミナルをひとつのアプリケーション上でタブ化して実行することができるのがウリだと思います。cmd.exeとUNIX系のコマンドラインを半々くらい使わなきゃいけない時は良いかもしれませんね。

## 手段2: babun

今はこっちを使ってます。

## DL

[Babun - a windows shell you will love!](http://babun.github.io/)からダウンロード or githubからclone。
chromeだと不正なファイルとみなされてダウンロードできないので、Internet Explorerとかでやればいいんじゃないですかね。

ダウンロードしたら解凍して`install.bat`を叩くと、勝手に全部インストールしてくれます。
環境は全部`~/.babun/cygwin/`を`/`に読み替えて、その配下に新たに作ってくれるので元の環境はよごれない！…らしいです。

詳しくは[[D] Windowsはターミナルがダメだから使えないってのは過去の話?](http://blog.drikin.com/2015/01/windows-2.html)を参照ください。

## フォント変更

[Migu 1M](http://mix-mplus-ipa.osdn.jp/migu/)をインストールします。
babunを起動して、ウィンドウを右クリック > Options > Text > Fonts でMigu 1Mを選びます。

## パッケージ追加

```zsh
pact install tmux
```

これが使ってみたくてbabun入れた、みたいなとこはあります。
ちょっと自分の言葉でちゃんと説明はできないので、[tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト](http://kanjuku-tomato.blogspot.jp/2014/02/tmux.html)を読んで**ワクワクしてください**。

## 設定ファイルのコピー

すでに持ってる`vimrc`などの設定ファイルを、babunのデフォルトディレクトリに移します。

## 日本語化

nkfが…とかlessが…とかやりかけて、果てしなさ過ぎて[cocot](http://vmi.jp/software/cygwin/cocot.html)を使うことにしました。

```zsh
pact install getent libiconv libiconv-devel inetutils
mkdir ~/tmp
cd ~/tmp
git clone http://github.com/vmi/cocot
cd cocot
./configure && make && make install
```

で、コマンドの標準出力をキレイに実行することができるようになります。

```zsh
$ ping # -> キタナイ！！！
-------------------------------------------------------------------------
▒g▒p▒@: ping [-t] [-a] [-n ▒v▒▒▒▒] [-l ▒T▒C▒Y] [-f] [-i TTL] [-v TOS]
           [-r ▒z▒b▒v▒▒] [-s ▒z▒b▒v▒▒] [[-j ▒z▒X▒g▒ꗗ] | [-k ▒z▒X▒g▒ꗗ]]
           [-w ▒^▒C▒▒▒A▒E▒g] [-R] [-S ▒\▒[▒X▒A▒h▒▒▒X] [-4] [-6] ▒^▒[▒Q▒b▒g▒▒

▒I▒v▒V▒▒▒▒:
   -t             ▒▒▒f▒▒▒▒܂ŁA▒w▒肳▒ꂽ▒z▒X▒g▒Ping ▒▒▒܂▒▒B
                  ▒▒▒v▒▒▒▒▒▒đ▒▒s▒▒▒▒́ACtrl+Break ▒▒▒▒▒▒▒Ă▒▒▒▒▒▒▒▒B
                  ▒▒▒▒▒́ACtrl+C ▒▒▒▒▒▒▒Ă▒▒▒▒▒▒▒▒B
   -a             ▒A▒h▒▒▒X▒▒X▒g▒▒▒ɉ▒▒▒▒▒▒܂▒▒B
   -n ▒v▒▒▒▒      ▒▒▒M▒▒▒▒R▒[▒v▒▒▒̐▒▒ł▒▒B
   -l ▒T▒C▒Y      ▒▒▒M▒o▒b▒t▒@▒[▒̃T▒C▒Y▒ł▒▒B
   -f             ▒p▒P▒b▒g▒ Don't Fragment ▒t▒▒▒O▒▒肵▒܂▒ (IPv4 ▒̂▒B
   -i TTL         Time To Live ▒ł▒▒B
   -v TOS         Type Of Service (IPv4 ▒̂݁B▒▒▒̐ݒ▒▒▒▒▒g▒p▒▒▒▒▒▒炸▒A
                  IP ▒w▒b▒_▒[▒▒T▒[▒r▒X ▒t▒B▒[▒▒▒h▒̎▒ɉe▒▒▒▒▒܂▒▒▒B
   -r ▒z▒b▒v▒▒    ▒w▒肵▒▒▒z▒b▒v▒▒▒̃▒▒[▒g▒▒^▒▒▒܂▒ (IPv4 ▒̂▒B
   -s ▒z▒b▒v▒▒    ▒w▒肵▒▒▒z▒b▒v▒▒▒̃^▒C▒▒▒X▒^▒▒▒v▒▒▒▒▒▒܂▒ (IPv4 ▒̂▒B
   -j ▒z▒X▒g▒ꗗ  ▒ꗗ▒Ŏw▒肳▒ꂽ▒ɂ₩▒ȃ\▒[▒X ▒▒▒[▒g▒▒p▒▒▒܂▒
                  (IPv4 ▒̂▒B
   -k ▒z▒X▒g▒ꗗ  ▒ꗗ▒Ŏw▒肳▒ꂽ▒▒▒▒▒ȃ\▒[▒X ▒▒▒[▒g▒▒p▒▒▒܂▒
                  (IPv4 ▒̂▒B
   -w ▒^▒C▒▒▒A▒E▒g
                  ▒▒▒▒▒▒^▒C▒▒▒A▒E▒g▒̎▒▒(▒~▒▒▒b) ▒ł▒▒B
   -R             ▒▒▒[▒e▒B▒▒▒O ▒w▒b▒_▒[▒▒p▒▒▒ċt▒▒▒[▒g▒▒X▒g▒▒▒܂▒
                  (IPv6 ▒̂▒B
   -S ▒\▒[▒X▒A▒h▒▒▒X
                  ▒g▒p▒▒▒▒[▒X ▒A▒h▒▒▒X▒ł▒▒B
   -4             IPv4 ▒̎g▒p▒▒▒▒▒▒▒܂▒▒B
   -6             IPv6 ▒̎g▒p▒▒▒▒▒▒▒▒▒܂▒▒B

```

```zsh
$ cocot ping # -> キレイ！！！
-------------------------------------------------------------------------
使用法: ping [-t] [-a] [-n 要求数] [-l サイズ] [-f] [-i TTL] [-v TOS]
           [-r ホップ数] [-s ホップ数] [[-j ホスト一覧] | [-k ホスト一覧]]
           [-w タイムアウト] [-R] [-S ソースアドレス] [-4] [-6] ターゲット名

オプション:
   -t             中断されるまで、指定されたホストを Ping します。
                  統計を表示して続行するには、Ctrl+Break を押してください。
                  停止するには、Ctrl+C を押してください。
   -a             アドレスをホスト名に解決します。
   -n 要求数      送信するエコー要求の数です。
   -l サイズ      送信バッファーのサイズです。
   -f             パケット内の Don't Fragment フラグを設定します (IPv4 のみ)。
   -i TTL         Time To Live です。
   -v TOS         Type Of Service (IPv4 のみ。この設定はもう使用されておらず、
                  IP ヘッダー内のサービス フィールドの種類に影響しません)。
   -r ホップ数    指定したホップ数のルートを記録します (IPv4 のみ)。
   -s ホップ数    指定したホップ数のタイムスタンプを表示します (IPv4 のみ)。
   -j ホスト一覧  一覧で指定された緩やかなソース ルートを使用します
                  (IPv4 のみ)。
   -k ホスト一覧  一覧で指定された厳密なソース ルートを使用します
                  (IPv4 のみ)。
   -w タイムアウト
                  応答を待つタイムアウトの時間 (ミリ秒) です。
   -R             ルーティング ヘッダーを使用して逆ルートもテストします
                  (IPv6 のみ)。
   -S ソースアドレス
                  使用するソース アドレスです。
   -4             IPv4 の使用を強制します。
   -6             IPv6 の使用を強制します。

```

あとはzshで以下のように設定すればOK。

```zsh
alias ping='cocot ping'
alias mvn='cocot mvn'
alias sqlplus='cocot sqlplus'
alias -s py=python
```

でもこの使い方だと、打ちたいコマンドが増えるたびにエイリアスが増えちゃうのが哀しそう。
なんとかしなきゃ。

あと[zshすげー！](http://itchyny.hatenablog.com/entry/20130227/1361933011)

## 参考資料

### ConEmu

- [ConEmu プロジェクト日本語トップページ - OSDN](https://osdn.jp/projects/conemu/)
- [ConEmu 突っ込んだら Git for Windows の Git Bash がカッコよくなった - てっく煮ブログ](http://tech.nitoyon.com/ja/blog/2014/03/07/fancy-git-bash/)
- [Windows標準のコマンドプロンプトウィンドウをタブ化できる「ConEmu」 | OSDN Magazine](https://osdn.jp/magazine/14/05/23/200000)

### babun

- [Babun - a windows shell you will love!](http://babun.github.io/)
- [[D] Windowsはターミナルがダメだから使えないってのは過去の話?](http://blog.drikin.com/2015/01/windows-2.html)
- [Cygwinのpingによる文字化けを解決する | PCと遊ぶ日々の記録](http://calcurio.com/wordpress/?p=1387)
- [zshのalias -s (suffix alias)が神な件 - プログラムモグモグ](http://itchyny.hatenablog.com/entry/20130227/1361933011)
- [cocot - COde COnverter on Tty](http://vmi.jp/software/cygwin/cocot.html)
- [tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト](http://kanjuku-tomato.blogspot.jp/2014/02/tmux.html)