あのクラムシェル端末をVimで使い倒そう!

全国のVimmerのみなさん、こんばんは!
Vim Advent Calendar2012の138日目の記事を書かせて頂きます、端末大好きVim大好きなrattcvと申します。

Vimとお出かけしてますか?

Vimに対して単なるエディタ以上の愛を抱いているVimmerの中には、モバイルガジェットにもVimを入れて所構わず時構わずイチャイチャされてる方も多いことでしょう。
今はiPhoneにせよAndroidにせよ、公式のStoreからVimが使えるアプリをインストール出来るので、ごっついノートPCとか持ち出さなくてもVimと一緒に気軽にお出かけ出来る環境が整ってきていてます。素晴らしいですね。

Androidで使えるVimについて。

AndroidVimを使うには、Playからインストール出来る"Vim Touch"を入れるのが一番お手軽だと思います。タッチパネルから操作しやすい様に色々と工夫されていて、評判も上々のようです。私は使ったことがないのでレビューは書けませんが、hyamadaさんのブログやMOONGIFTの記事が参考になるかと思います。


一方、私みたいな端末好きでVimはコンソール版って人は、同じくPlayにある"Terminal IDE"という、端末エミュレータがベースのアプリを使うのがいいと思います。Vim以外にもGeek御用達なツール類がてんこ盛りです。肝心なVimの使い勝手が気になるところですが、詳しく紹介されてるサイトはちょっと見つけられませんでした。日本語の扱いは苦手な(出来ない?)様ですね。

今回Vimを入れる端末は・・

さて、上で紹介したアプリはいずれもAndroid要件が2.3(.3)以上な為、私の手持ちのガジェットの中で最もVimが似合うヤツ ーそう、薄々お気づきかと思いますがあの伝説の名機『IS01』では動かないんです!そんな化石端末今すぐ捨てろ的な声も聞こえてきそうですが、持ち運びに丁度良く、ポケットからサッと出してqwertyキーボードが使えるコイツでVim使いたいんです。同じようなコンセプトの後継機も中々出ないですしね。それなら自分で環境作っちゃえ!ってのが今回の記事の主旨です。IS01(かDocomo版のLynx)は結構安価に購入・運用出来たので何となく買っちゃった方も相当数いらっしゃるとは思うのですが、持ってない/とっくに手放した方にはあんまし関係なくってすいません。
持ってる方は埃かぶってる端末を復活させる事が出来るかもしれません!(本当か?)
最近の機種では、@syuiさんがご紹介してくださった"rbox"が使えると思います。一点補足すると最新の版では特にインストール後ファイル追加しなくてもgitが使えます。


Android向けのVimと周辺ツールのビルドについて

私がIS01を入手した3年ほど前は、当然あると思っていたVimAndroidマーケット(当時)に存在せず、ついに出たか!と思ったアプリも有料だったりで非常にがっかりし、何か手はないものかと模索していたものでした。
アプリが無いならコンソール版のVimは使えないのか?とは言っても一般的な携帯端末で生コンソールに落ちることなんて出来ないだろうし、仮想端末アプリは使えるのかな?お、Androidソースコードにもともと"Term"っていう端末エミュレータのアプリが含まれてるじゃん。ってことはマーケットにも・・あるあるw
てな感じでLinuxカーネル)がベースであるAndroidでも、端末エミュレータでログインすれば当然CLIのシェルが動き、プログラムの実行が可能なことは分かりました。この環境でコンソール版のVimを動かせばいいのか、と思ったものの 、OSSAndroid NDK等を使ってAndroidネイティブな環境にポーティングするのは結構骨が折れる作業ですんなりいかない場合が多いんですよね。でもこんだけ世界中でVimが使われてるんだからAndroidに移植している人ぐらい、何人か居る筈だ!と血眼になって探したらやっぱり居たんですね、これが。はい、他力本願ですw



ご覧になれば分かると思いますが、agcc.pl(Android NDKに含まれるツールチェーン版gccへのラッパースクリプト)を使用してビルドを実施されています。
私も基本的には上記の記事の手順をもとにいつもVimをビルドしています。

さて、こうして念願のVimが使える様になった訳ですが、Vimが使えるなら他のツールも色々使える筈じゃん?と思い色々なツールの移植を試みました。そうこうしている内に手持ちのガジェットの種類も徐々に増えて行き、動作確認も新らし目な機種を使う機会が多くなり、更には使うよりもAndroidで動かす事の方が面白く主体になってしまっていたんですね。そう、大好きな筈のIS01ちゃんを顧みず暫く放置しちゃってたんです。やっとそれなりに環境が整ったなー、そろそろ使おうかなーと思った時にはもうIS01上では完全には動かないものになっていたんです。
それなら動くようにしてやろうじゃん、そんな手間かからんだろ、とタカをくくっていましたが実際やってみたらそんな甘くなかったです。一応なんとか使えるようにはしたものの、NDKでビルドしたもの、Sourcery G++ Toolchainを使ったもの、ARM Linuxでstaticビルドしたものが混在する代物になりました。
が、動けばいいんですw

端末アプリについて

さて、今回でっちあげた準備したツールですが、AndroidTerminalEmulatorではなくキーバインド変更の容易さ、Android1.6でのマルチバイト対応の面からConnectbotをベースにしました。
名づけて、Modified Connectbot with Vim and other useful Tools 略称 M.C.V.T.ですw
"other usefull tools"とは言ってもzsh,git,w3m,rubyぐらいですね。Vim中心の環境なんでTerminalマルチプレクサは要らないかな、と思い外してます。IS01専用です。当然rootは要りません。CM4IS01等のカスタムROMではキーコードの割り当てが違うので使えないと思います。

インストール方法

アップローダから、MCVT4IS01.apkとrboxfileをダウンロードします。rboxfileの方はSDカード直下(/sdcard)に置いてください。また、お好きな等幅フォントを"rbox_font.ttf"にリネームしてこちらもSD直下に置いとくと表示に使われます。無くても大丈夫ですけど。

本体をインストール後に適当な名前でlocal接続を作成し起動すると初回にファイル展開をします。結構時間がかかりますが、zshが起動するまで、暫し待ちましょう。


ConnectBotですが、IS01Vimを使うためにいくつかカスタマイズしています。
IS01に付いて回る、画面右のサイドメニューを消しました。
キーバインドに関しては

  • 左[shift]+[1〜9の数字キー]で刻印通りの記号
  • 左[shift]+[0]でパイプ
  • 右[shift]で[TAB]
  • [絵・顔・記]で[Ctrl]
  • [文字]で[Esc]



を入力するようにしてあります。
◆タップでマウスイベントを起こすパッチを当てているので、画面へのタッチ操作でVimのカーソル移動、バッファの切り替え、テキスト選択等が出来ます。

早速Vimを使ってみましょう。


タップ&ドラッグで文字選択。


w3mが動くのでw3m.vimが使えます。



ここまで順調に来てて、いよいよNeobundle入れて色んなプラグインの動作確認!って思ってたら直前にgitに不具合が見つかってしまいまして、更に不幸なことに開発用のARM Linuxマシン(Debian ARM on Lifetouch Note)の環境も壊れるという事態に陥ってしまいました。本記事の投稿が遅れたのもこれが原因ですが、Debianの再インストから始めてたら半日遅れ程度じゃ済まないのでとりあえずここで一旦締めたいと思います。
楽しみにしてた方(居るのか?)には申し訳ありませんが後日また続きを書きます。
ただ、Vim本体はじめ他のツールも普通に使えるのでとりあえず試したい場合はgitを抜いた状態ですが使ってみてください。手動で入れればデフォなIS01でVimShellもUniteも動きます。

ではでは中途半端になりましたが近いうちにまたー。
あ、そうそう今回もjnethackも入っちゃいましたww