キーボード派のWindows開発環境
そういえば、こういうサイトに定番っぽい開発環境を書いたのがないので、自己紹介?も兼ねて晒してみます。
開発はだいたいWindows上のvmware(Debian)でやってます。ただし、そこは定番どころばっかりなのでパス。まぁvim+screen+zshです。puttyでつないでますよ。sambaでマウントしてますよ。ええ。それぞれ結構設定しまくっていて、グローバルなSVNサーバーにおいてあります。
Windowsでの開発環境
あんまりWindowsは好きではないけど、Macよりは好きだったりする。というわけでWindows。普段使いのOSでもあるので、主に自分用の小物を書くことが多いです。怠け者なので、自動化できるものはすぐプログラムに置き換えちゃいます。でも言語は結構様々。もとから言語にこだわらず、一番適しているものを使う主義なので小物が多いにもかかわらず、言語は結構多いのかも。
今のところ、だいたい
- それなりのGUIが必要なアプリ:Delphi6
- 一枚ウインドウがあるくらいのGUIアプリ:Python(wxWidgets)
- GUIがなく、立ち上がりの速さや軽さが欲しいもの:C(MinGW)
- それ以外の小物:Python
という感じで適材適所。
Linuxではまったく定番な感じ(定番が自分にしっくりきた)だったけど、Windowsにはキーボード派の定番ってのは少ない気がするので、結構独特なのかも。方針は
- キーボードで操作しやすいように。
- なるべくlinuxと同じような感覚(←これ重要)で。
感覚なので一緒じゃなくてもいいのです。
gvim
開発はほとんどこいつです。Delphi以外は。Linuxのvimと同じ設定ファイルを共有してます。俺はvimがなくちゃ生きていけない人間なので、USBメモリにいれてもち運べるようにしてあります。
Firefox
ブラウザはこいつ。ただしPortableFirefoxです。これもUSBメモリにいれて持ち運べるように。学校にいってもUSBメモリをさすだけで普段の環境。拡張も結構つっこんでます。
cltc
タスク切り替えが便利になるソフト。こんな感じで表示されます。インクリメンタル検索での選択や、カーソルキーでの選択ができます。
windowsでタスク切り替えというとAlt+TABですが、これ非常に使いづらい。そこでこのソフト。ここでキモになるのがキー設定で
Ctrl+Shift+zで起動Ctrl+jとCtrl+kでタスクを選択
という風に設定しています。俺と同じLinux開発環境の人は分かるでしょう(笑
Ctrl+zがscreenのエスケープでjkはvim。これだけでかなりLinuxと同じ感覚でタスクが選べるようになります。
MigemizeExplorer
こりゃ定番。説明不要ですよねえ。超便利。
craftlaunch
これがないと始まらない。コマンド型ランチャー。craftlanuchラブ。こいつはデスクトップ用と持ち運び用(USBメモリに入れる用)の2個も用意してます。起動用ホットキーはeclipseなんてもんは使ってないのでCtrl+Spaceです。
俺の場合はほぼ全ての作業の起点がこのソフト。ランチャーとしてのソフト起動から簡易シェルとしてまで大活躍。中でもオススメなのはexplorer.exe(windows標準のシェル)+craftlaunchの連携。
craftlaunchというと「あふ」との連携が有名ですが、俺はあえてexplorer.exeと連携してます。というのも、なにぶん普段使いのOSですから、マルチメディアのファイルなんかも多いわけです。重くてもプレビューが見れたりするのは便利なもんです。日本語のファイル名だし、ファイラーつかってもファイル選択するのがめんどくさいもんです。
どうやって連携してるかというと、基本的に小物アプリ+ショートカットキー。この使い方をはじめるきっかけになったのは「せっかくcraftlaunchからキーボードだけでフォルダ開けるんだから、ホームポジションで楽にキーボードだけで閉じたいなあ」という思い。
finiというシンプルなソフトを使うとそれができます。finiは最前面のアプリを終了するだけです。これをctrl+[(ご存知のとおりvimのエスケープです)にショートカットとして割り当てます。すると
ctrl+space, ctrl+[
の2ステップでウインドウが閉じられます。ctrlは押しっぱなしでいいので非常に軽快に閉じられます。鉄の小指を持つemacs使いの人ならなおのことでしょう(笑
その他の連携
・フォルダの新規作成
windowのexplorerの不満はフォルダを作るのがめんどくさいことですよね。キーボードならAlt+F W Fでしょうか。というわけでfiniのような自作コマンドで対応してます。超テキトーなのですが、あげておきます。
こいつをctrl+nにショートカットとして割り当ててあります。すると・・・
craftlaunchでフォルダを開く→MigemizeExplorerで快適にフォルダをたどる→「フォルダつくりてえ」→ctrl+space フォルダ名入力 ctrl+n
という感じになるわけで、結構ハッピーです。
・コンソール
おなじような感じで、表示されているフォルダをカレントディレクトリとしてcmd.exeを起動するものもつくってあります。ほとんどつかわないけど。
以上のような、変なWindowsで日々暮らしています。cltcでブラウザやvim、コンソールを行き来しながらIDEはあんまり使わないでガリガリ書いています。
まぁ、だいたいvmware上のLinuxにいるんですけど(笑
まとめると
- cltcで
ctrl+zにctrl+j,k。快適ですよ。 - MigemizeExplorerはWindows標準装備になればいいのに。
- craftlaunchはあふと連携してもいいけど、explorerと連携してもハッピーですよ。
という感じです。
エミュレーターのほうはあのあとCPUを若干チューニングして、1フレーム0.1はキリました。今はPPUを書いてるんですが、そろそろ就職に備えて家を探さないといけません。京都と関東を行き来するのはいろいろこたえます。移動中はシグマリオンのPocketSchemeでSchemeでも書いて暇つぶしです。
vimでvmwareとWindowsのクリップボードを同期する
coLinux で Emacs の kill-ring の内容をWindowsのクリップボードと同期する
とか
coLinux 上の Emacs の kill-ring の内容をWindowsのクリップボードと同期する by Perl
から。
上記のサイトのをもってきて.vimrcをちょろっと書けばいいんだけど、テキストを受信するサーバーは常時立ち上げていそうで、スクリプトだとなんとなくアレなので、exeがいいなあ。簡単にできそうなので、とりあえず探すよりは作ってみるメソッド。
ファイル一式
clsync.zip
内容は
- clipboard_server.exe:Windows側で実行するサーバー
- clipboard_server.ini:サーバーのポートの設定
- clsync.py:vmware側におくクライアントスクリプト
使い方など
Windows側ではclipboard_server.iniで適当にポートを設定して(当然外部から見えないやつを)、clipboard_server.exeを起動しておいてください。タスクトレイにアイコンが表示されてますので、そこから終了できます。
vmware上のLinuxですが、まずnkfがインストールされている必要があります。すみません、クライアント側手抜きするために使っています。そしてclsync.pyをパスの通ったところにおきます。clsync.pyにはホストのWindows側で動いてるサーバーのポートとIPを設定する箇所があるので、適宜書き換えます。またポートとIPはオプションでも渡せます(詳しくはclsync.py -hで)。
あとは
- function! SyncClipboard()
- let cliptext = substitute(getreg(), "'", "'\"'\"'", 'g')
- let cmd = "echo '" . cliptext . "' | clsync.py"
- call system(cmd)
- endfunction
- nmap ,c :call SyncClipboard()<cr>
こんな感じなのを.vimrcに追加すればOK。最後にyankしたものが,cでホストのWindowsのクリップボードに送られます。
追記:
っとよく考えたらvmw copyとまったく一緒。.vimrcのclsync.pyの部分をvmw copyに置き換えれば同じように動作する。ただ、vmwの説明には
コピーするテキストに改行コード以外の非 ASCII 文字を含めることはできません。
ゲストおよびホスト OS によっては、キャリッジリターンの付与・除去が行われ
ます。
コピー可能なテキストの最大長は約 65,000 バイトです。
ってある。
今回作ったモノの場合はnkfをかませているのでもちろんいつでも日本語オーケー。
それ以上は深くみてないけど、UTF-8だと日本語でもvmw copyしても問題なさそうだ。EUC-JPの「ほげほげ」とかいう内容のtest.txtをvmw copy test.txtとかするとダメだった。
ま、というわけで、 cat test.txt | nkf -w | vmw copyで万事解決なんだけど。
というわけでこのツールは使われないまま終わる(笑
coLinuxはよく知らないけど、coLinuxにこういうホストOSへのクリップボードコピーコマンドがないなら、coLinuxでは役に立つかも。