【Cygwin】MS-Windows上のターミナルエミュレータまとめ【MinGW】

まとめ
======

以下がおすすめです。

## コンソールツールのパッケージ
* [MSYS2](http://sourceforge.net/projects/msys2/)。minttyが標準。Zshも使えるよ。
* [cmder](http://bliker.github.io/cmder/) 起動時にPowerShellを起動するようになりました。bash同梱なのでbashも使えますが…。ConEmu,clink,gitを詰めあわせたもの。

## ターミナルエミュレータ単体
* MinGWにWindowsネイティブなVim/Rubyを使いたい人　… ckw, ConEmu
* Cygwinで生きていくことに決めた人 … ck, mintty
* コマンド叩くのがリモートだけの人 … TeraTerm, Putty, rlogin, tanasinn、もしくはsshコマンドを手当した上でminttyかckでもよさげ。
* ANSI 256色対応 … TeraTerm, Putty, mintty, ck

### 個人的な落とし所

* ローカルのコマンドを叩くマシンの場合<br>
  もう[MSYS2](http://sourceforge.net/projects/msys2/)でいいと思う。[もろもろ設定をする](http://qiita.com/magichan/items/7702d7865deaaca2ad44)ことによって（主にwinptyのおかげで）vimとかjnethackが動く模様。
* リモートのコマンドしか叩かないマシンの場合、WinSCP+Putty-ranvis（セッション共有できる為。あと当該マシンは管理者権限がないので色々諦めた。）

まえがき
========
 
WindowsとUnix(Cygwin含む)で端末の制御方法が違うため、WindowsネイティブなVimやirbがうまく動かないターミナルエミュレータがあります。
[winpty](https://github.com/rprichard/winpty)というコマンドを介すことでWindowsのコマンドとUnix系のコマンドを共存できます。

[TeraTerm](http://sourceforge.jp/projects/ttssh2/)
========

元々はTelnetとシリアルコンソールとパソコン通信なんかに使われてるターミナルエミュレータ。満20歳。祝成人。今はSSHとかCygwinにも対応してる。OpenSSHの鍵がそのまま使えます。あんまり癖はないけど歴史的経緯で設定が複雑。ユーザは多いので不具合は少なそう。未だに開発進んでるし。

Cygterm経由でCygwinは使えますが、MinGWには使えません。

マクロ書くと結構楽というか公開鍵はマクロからじゃないと自動的に指定できません。PasswordAuthentication yesならssh://name:pass@ip-addrとか書けます。ヘルプを見ると色々できることがわかります。

![teraterm.png](https://qiita-image-store.s3.amazonaws.com/0/37937/b1fe5c42-dc3b-53a2-6ec7-f04726db298b.png)

* [TeraTermでSolarized風の配色にする](http://sanrinsha.lolipop.jp/blog/2011/12/solarized-colorscheme-for-vim%E3%82%92tera-term%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F.html)やつ。

[Putty](http://www.chiark.greenend.org.uk/~sgtatham/putty/)
=====

SSHターミナルエミュレータ。鍵がOpenSSHと別形式なのがめんどくさい。WinSCPと連携するので、WinSCPを使う人には便利です。ssh-keyagentもあるし、Cygwinコンソールも開けます。
[プライベートパッチ版](http://ice.hotmint.com/putty/index.html)か[Putty-ranvis](http://www.ranvis.com/putty)を使うのがいいと思います。

MinGWには使えません。セッションごとに設定保存できるし、TeraTermより設定もわかりやすいと思う。

見た目はminttyと同じなので画像は割愛。

[ck](http://www.geocities.jp/meir000/ck/)
==

Cygwin専用。Telnet/SSH等の通信機能はありません。設定をJavaScriptで書かなきゃないのが面倒ですが、画面がきれいだし機能が少ないので好きです。なにげに1プロセスで複数ウィンドウ持てます。

Windows寄りのが[ckw-mod](http://ckw-mod.github.io/)だったと思います。ckwならMinGWのbashが開けます。cmd.exeや[nyaos](http://www.nyaos.org/)、[clink](http://code.google.com/p/clink/)に合わせてもいいと思います。

スクショはckw-mod。ckwはANSI256色には対応していません。対応するにはANSIエスケープシーケンスを処理してる部分に表を差し込めばよいと思うのですが、コンパイルにVCが欲しいようですね。

![ckw.png](https://qiita-image-store.s3.amazonaws.com/0/37937/98fe2ba5-ed26-0a3b-ecb3-bee694360f45.png)

[mintty](https://code.google.com/p/mintty/)
======

Puttyの描画部分からforkした単機能ターミナルエミュレータ。Telnet/SSH等の通信機能はありません。1プロセス1ウィンドウ。isattyが0を返すのでWindowsネイティブのvimやirbが使えません（winptyを通せば良い）。

![mintty.png](https://qiita-image-store.s3.amazonaws.com/0/37937/128303ac-7373-c069-048f-c5d83a122d6b.png)

* [mintty-color-scheme](https://github.com/oumu/mintty-color-schemes.git) Monokai、Solarizedとか。

[ConEmu](http://code.google.com/p/conemu-maximus5/)
======

タブで複数コンソールが開けて相当高機能なターミナルエミュレータ。Telnet/SSH等の通信機能はありません。設定が複雑です。文字コードは明示的に設定できないようです。フォントの文字コードを使うとかそんな設定はできるけど、意味がよくわからない。

Minttyとは逆の理由でUnix系ツールのANSI color codeは上手く動きません。Windowsのcolor codeで動作しているプログラムは動作します。

![conemu.png](https://qiita-image-store.s3.amazonaws.com/0/37937/d79a2b45-0a14-df54-c096-bbedef5d3c8f.png)

[Console2](http://sourceforge.net/projects/console/)
========

msysと合わせるとダメみたいです。cmd.exeかPowerShellで使うといいのかもしれません。

[rlogin](http://nanno.dip.jp/softlib/man/rlogin/)
======

rlogin/telnet/sshターミナル。TeraTermっぽい感じ。高機能らしいのですが（TERM的な意味で）設定が難しい…。
CygTermを使えば（ｒｙ

その他コンソール作業向けの便利ツール
========================

* [cocot](http://vmi.jp/software/cygwin/cocot.html)
  端末の間に割り込んで(cocot bashとかcocot sshとか)文字コードを変更してくれるツール。jnethackのお供に。
* [nkf](http://sourceforge.jp/projects/nkf/)
  文字コード変換ツールのデファクトスタンダード。
* [mactype](https://code.google.com/p/mactype/)
  フォントレンダラ。好みにもよるけど小さい字がWindows標準のClearTypeよりきれいな気がするので入れています。
* [mosh](https://mosh.mit.edu/)
  SSHが途切れなくなるツール。正しくはscreen/tmuxのようなセッション機能がサーバ側で自動起動して接続が切れた場合はクライアント側で自動リトライするツールだと思う。