Windowsでちゃんとしたターミナル使いたい
最近、WindowsでPython書いてWindowsでgit動かして…という状況に置かれているpuhitakuです。
というのも、本来はコーディングもgitもLinuxで済ませたいんですが、環境の依存性が高いコードを書いている関係でWindowsでしなきゃいけないっていう。
エディタはSublime Textを使ってるんで問題ないですが、一番の苦痛はそう、ターミナルエミュレータです。Windowsのコマンドプロンプト(cmd)のウンコな点を挙げるとするならば、
みたいな感じです。特にフォント関係が大きいですね。
ところで、Windows for Gitをインストールすると爆速でMSYS + Gitな環境が手に入ります。このままだとコマンドプロンプトに変わりはないので、ここにMinTTY(PuTTYベースのターミナルエミュレータ)を入れてみました。
私の環境だとこんなかんじです。
入れてみる
Git for Windowsは入っている前提で話を進めます。
MinTTY for Git for Windowsを入れる
なんだか混乱しそうな名前ですが。 こちらからダウンロード、インストールします。
もうすでに2年ほどメンテされてませんが2014年4月現在ちゃんと動いています。
これを入れた時点で、スタートメニューに同名のフォルダができます。
winptyを入れる
このままだとipythonやvimなど対話的コンソールアプリが正常に動かないので、winptyを導入します。
このRepoでMSYS版をダウンロード・解凍して、MinTTYの本体が入っているフォルダに全ファイルをコピーします。
ショートカットをいじる
うちの環境だとなぜか.minttyrcのデフォルトの場所がおかしいことになってたので、その設定を追加してついでにwinptyの導入設定をします。
スタートメニューのショートカットが参照しているGitMintty.js
に以下の変更を加えます。
- 15行目書き換え:
var minttyArgs = " -c %HOMEDRIVE%%HOMEPATH%\\.minttyrc --title \"Git Bash\"";
- 26行目書き換え:
" --exec " + quotedAbsolutePath("bin\\console") + " " + quotedAbsolutePath("bin\\bash") +
15行目のは.minttyrcの場所の明示的な指定、26行目はwinptyを介してbashを実行する設定です。
全部書き換えると以下のようになります。
var wshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var dp0 = fso.GetParentFolderName(WScript.ScriptFullName);
var quotePath = function(path) {
return "\"" + path + "\"";
}
var quotedAbsolutePath = function(relpath) {
return quotePath(fso.BuildPath(dp0, relpath));
}
var shellArgs = " --login -i";
var minttyArgs = " -c %HOMEDRIVE%%HOMEPATH%\\.minttyrc --title \"Git Bash\"";
if (WScript.Arguments.Length > 0) {
wshShell.CurrentDirectory = WScript.Arguments(0);
} else {
wshShell.CurrentDirectory = wshShell.ExpandEnvironmentStrings("%USERPROFILE%");
}
var cmd = quotedAbsolutePath("bin\\mintty.exe") +
minttyArgs +
" --icon " + quotedAbsolutePath("mintty\\gitmintty.ico") +
" --exec " + quotedAbsolutePath("bin\\console") + " " + quotedAbsolutePath("bin\\bash") +
shellArgs;
wshShell.Run(cmd, 1, false);
これで、あとはvimやgitが正しく動くことを確認すれば導入作業は完了です。 あとはお好みでフォントを指定したりしてください。
参考ページ
インストールは以下のサイトを参考にしました。(ソフトの配布ページは省略)
Issue 201 - mintty - mintty does not save config when launched from msysGit bin directory