Cygwinは最初に入れたときの見た目の印象があまりにも悪すぎてずっと敬遠してきたんですが、改めて導入してみると意外と使える事に気づきました。
Windows環境でgitを使うのが一番の目的で、他の選択肢としては TortoiseGit、
msysgitのgit bashなどがあるんですが、それぞれにデメリットがあります。
- TortoiseGit
- 通常使用に堪えるクオリティになってるけど、中で何が起こってるのかよく分からないのでgitを使いこなしてる感がない
- msysgitのgit bash
- ベースがコマンドプロンプトなので使いにくい。
- フォント変えられない。横幅広がらない。
- VMWare経由
- さあコミットしようという時にサスペンドされてたりしてちょっと面倒
というわけでCygwin再挑戦の記録。実にNot bad at allな環境ができあがりました。さようならコマンドプロンプト。
成果
- FuTTYっていう高機能でポータブルなPuTTYクローンを使えてる
- Puttyから256色ターミナルでscreen+zshできてる
- screenをマウスでスクロールできてる
- screen中にPuttyをいきなり閉じて再接続したらアタッチできてる
- vim file.txtってするとWindows側のgvimが起動してくれてる
- 日本語の読み書きもバッチリ
- もちろんgitもバッチリ
導入1:Cygwin
http://cygwin.com/install.html からダウンロードしてインストールするだけです。最初にインストールしておくパッケージは好みの問題ですが僕の場合はこんな感じです。
- zsh
- git-core
- git-svn
- wget
- make
- gcc
- openssh
- vim (gvimがあるなら入れなくていい。後述)
導入2:FuTTY
“cygwin putty”でググルと「cygtermとPuTTYごった煮版を使え」という内容ばかり出てきますが、不要です。cygtermのビルドも、ややこしい環境変数設定も不要です。PuTTYもごった煮版ではなく高機能な海外産のPuTTYクローンを使いましょう。最近のCygwinは内部文字コード変換によってUTF-8をサポートしているみたいなので、日本語パッチなしのPuTTYでも問題なく日本語が扱えます。
ちょっと探してみるとPuTTYクローンは色々見つかりましたが、最終的に落ち着いたのはFuTTYです。これの特徴は色んなPuTTYクローンのいいとこ取りで、
- PuTTY Trayのトレイ収納機能
- ファイルに設定を保存するポータブルモード
- 切断されたホストへの再接続機能
- PuTTYCygのCygwin接続機能
- フルスクリーン表示
- 透過
- URLを自動リンク
- マウス中ボタンで貼りつけ、右クリックでメニュー
などなど、素敵な機能が揃ってます。UIは英語ですが。
導入はダウンロードして実行するだけ。Cygwinに接続するためにはcthelper.exeというプログラムが必要ですので同じ場所から落としてFuTTY.exeと同じ場所に置きます。 なおPageantなどは付属してないので必要ならばPuTTYの公式サイトからどうぞ。
導入3:FuTTYからCygwinへ接続
この状態ですでにFuTTYからCygwinへ接続できるはずです。FuTTYを起動し、
- Connection TypeはCygtermを選択
- 普段ホスト名を入れるところに-と入力
- Window->Translation->Character Set TranslationでUTF-8
- Connection->Data->Terminal-type stringにxterm-256color
そしてOpen。
ででーん。
ホスト名の欄にzshなどと書けば最初にzshが起動してくれます。僕はここにscreen -Rを入れて、.screenrcでshell /bin/zshと設定してます。
なお、設定を保存するときにSessions from fileを選んでおけばレジストリに書き込まずファイルで設定を管理してくれます。Cygwinと一緒にUSBで持ち歩けてしまう。Dropboxにまるごと入れとくのもいいかも。
設定1:日本語
PuTTYの文字セットをUTF-8に設定します。.bashrcなり.zshrcなりで
export LC_LANG=en_US.UTF8
設定2:screen関連
マウスホイールでスクロールバックできるように。これはFuTTYの接続設定にてTerminal->Features->Disable switching to alternate terminal screenをチェック。仕組みはよく分かってません。
ちなみにアタッチ・デタッチはautodetachオプションがデフォルトでオンなので特に何もせずとも利用できます。
256色対応するには.screenrcに
term xterm-256color defbce "on"
を追記すればOKなはず。
設定3:Windows側のvimを起動させる
これはめちゃ便利です。すごい。Cygwin内から外のgvimを使う – ぱせらんメモにあるスクリプトを使えばvim file.txtとしたときにWindowsのgvimが起動してくれます。 Cygwinの/binなどにvimという名前で置いて実行権限を与えときましょう(chmod a+x vim)。
二個目のファイルを開いたときに同じウィンドウの新タブで開くよう改変したものを貼っておきます。
#!/bin/bash
# gvimのパス
WINDOWS_GVIM=/cygdrive/c/programs/dev/vim/vim73/gvim
# HOMEを削除
unset HOME
# vim起動時のコマンドラインオプション
moreargs=--remote-tab-silent
if [ $# -eq 0 ]; then
$WINDOWS_GVIM &
else
args=()
for arg in "$@"
do
# 実在するファイルか"-", "+"で始まらなければcygpathに通す
if [ -e "$arg" -o \( ${arg:0:1} != "-" -a ${arg:0:1} != "+" \) ]; then
args=("${args[@]}" "$(cygpath -wa "$arg")")
else
args=("${args[@]}" "$arg")
fi
done
$WINDOWS_GVIM $moreargs "${args[@]}" &
fi
改行コードをUnix (\n)にしておかないと正しく実行できないかも。
まとめ
- Cygwin意外とやるやん
- PuTTYはすごいけどFuTTYはもっとすごい
- 見た目がきれいだと使いやすい
- 忘れてたけどgitもちゃんと使えてる
普段EUC-JPなホストにつないで作業しないといけない人はFuTTYの導入に躊躇するかもしれませんね。一応、PuTTYjpのパッチをFuTTYに導入してくれないかとお願いのメールを送っておきました。果たして対応してもらえるかな?
おまけ:その他のPuTTYクローン
PuTTYCygに対応してるものも多い。
- KiTTY
- PuTTy Tray
- ExtraPuTTY
- 名前が一番良かったのはダントツでPortaPuTTY


