Windowsメインな人間のための不気味なCygwin環境
Cygwinは便利です。手軽に、Windows付属のコマンドプロンプトよりはずっと便利なCUI環境が手に入ります。Unix系のツールも色々使えます。
Windowsコマンドプロンプト向けのソフトウェアを使う
最近は、ScalaのREPLやErlangのerl、それからWindows用に作ったsbt.batなどでカーソルキーがうまく動作してくれず、困っていました。Cygtermやminttyなどからscreenを起動して、さらにその中でそれらを起動した場合に、カーソルキーで履歴が出るどころか、カーソルがどこかに行ってしまう。コマンドプロンプトからbashなどを起動した場合は問題なかったんですが…
この問題は、シェルの設定等で頑張るのは早々に諦めて、rlwrapというソフトウェアを使うことにより解決しました。Cygwinのsetup.exeからもインストール可能で、ソースコードからのビルドも可能でした。(ビルドにはreadlineやlibncurses-develが必要)
本来は「カーソルキー等で履歴が出る機能のないソフトに対して、それを提供するラッパー」ですが、こいつが入力をうまく捕まえてくれることにより、カーソルキーがあちこちに飛んで行ってしまう現象が防げるようです。
rlwrapをインストール出来たら、あとは rlwrap scala のように使えばOK。いちいち打つのはめんどくさいので、エイリアスを張るなりシェルスクリプトを書くなりしておくと良いのではないでしょうか。
Windowsのアプリケーションを呼び出す
邪道です。きっと意識の高い開発者様方には全力で馬鹿にされるでしょう。
Cygwinからは、Cygwin環境内のアプリケーション以外も呼び出せます。PATHの通っている、notepadやexplorerは余裕。シンボリックリンクを張れば、もっと変なところからも呼び出せます。Windowsのファイル階層は、Cygwin環境からは/cygdrive以下にシンボリックリンクが張られていて、例えば E:\bin\hoge ならば /cygdrive/e/bin/hoge となります。
% ls -l $(which sakura) lrwxrwxrwx 1 moccos None 58 9月 11 00:21 /usr/bin/sakura -> /cygdrive/c/Program Files (x86)/sakura/sakura.exe*
作ったシンボリックリンクは上記のような見た目です。これはきもい。しかし便利。
% vi hoge.c
じゃなくて
% sakura hoge.c &
みたいな。エディタ論争?なんすかそれwww という態度でいきましょう。
Explorerは引数を与えれば、ちゃんとその場所が開きます。今いる場所を開くのが意外と便利。
% explorer .
勿論万能とはいかず、うまくいかないものも勿論あります。ChromeはCygwinから引数としてHTMLファイル名を与えても、うまく開けませんでした。
以上、気持ち悪い作業環境をお勧めしてみました。Unix系のツールとWindowsのGUIツール、両方の良いところを使ってこそのWindows+CUI、でしょう。Unix側で複雑な事をしようとすると、悪いとこ取りになりかねないのが難点ではありますが。