android用Vimのビルドと実行環境の作成

このページにあるのは日本語が使用できるようにマルチバイトオプションを有効にしたandroid用Vimをビルド・実行するためのファイルです。

ARM版の他にx86版やMips版もビルド可能で、LinuxだけでなくWindowsでもビルドできます。

ソース

  • android NDK用Vimソース+ドキュメント
  • android-vim-src.zip
  • ビルド済みバイナリ+インストールドキュメント

使用しているOSに応じたAndroid NDKをダウンロードしてndk-buildの存在するディレクトリにPATHを通したら、端末かコマンドプロンプトからjniディレクトリへ移動してndk-buildを実行するだけです。

Android NDK

http://developer.android.com/tools/sdk/ndk/

必要なのはAndroid NDKのみです。

Android SDKやAndroid Studio等の開発環境も不要で、おすすめはしませんがandroidアプリのAIDEでもNDKを追加インストールすればPCなしでもバイナリを生成可能なようです。

Windowsの場合

  1. android-vim-src.zipを解凍します。
    1. 以降C:\android-vim-srcが生成されたとします。
  2. 環境に応じたNDKをダウンロードして解凍します。
    1. 以降C:\android-ndk-r10cが生成されたとします。
  3. スタートボタン等からコマンドプロンプトを開きます。
    1. スタートメニューから実行するか、Windows7以降ではエクスプローラのアドレス入力バーでcmdを入力することでも実行可能です。
  4. ndk-buildの存在する場所へPATHを通します(\は¥記号です)
      1. set PATH=%PATH%;C:\android-ndk-r10c
    1. 毎回コマンドプロンプトからPATHを通すのが面倒ならWindowsに設定してください。
  5. C:\android-vim-src\jniへ移動します
      1. C:
      2. cd android-vim-src
      3. cd jni
  6. ndk-buildを実行します。
      1. ndk-build

また、同梱の#android-vim-bin.cmdを使用するとダブルクリックするだけでビルド可能になります。

詳しくは同梱のandroid-vim-src.txtを参照してください。

Linuxの場合

Windowsの場合と同様にndk-buildへPATHを通してndk-buildを実行するとビルド可能です。

android 4.0以前で動作しない場合

Android 5.0ではPIE(位置独立実行形式)でないと実行できないので、デフォルトはPIE形式を有効にしています。

(Android 4.1-4.4はPIE形式と非PIE形式のどちらでも動作します)

以下の設定がApplication.mkにあればPIE形式としてビルドされるので、android 4.0以前で動作しない場合は該当部分を削除してビルドしてください。

APP_CFLAGS := -fPIE

APP_LDFLAGS := -pie

最新ソースへのアップデート

最新版ソースを取得する推奨方法はバージョン管理ツールを使用することです。

Vimの最新版へのアップデートはandroid-vim-src.zipのvim/srcディレクトリを上書きしてndk-buildを実行することで可能です。

ただしソースのアップデートやNDKのバージョンによってはconfigureから行わないとビルドできなくなる場合があります。

Android.mkかconfig.hを適切に変更してやればビルド可能なはずですが、configureから自分でやりたい場合は、以下に作業メモがあります。

android用vimのconfigure

ライブラリ

  • Vimランタイムライブラリ
    • ソースと対応した最新版を公式から取得して使用してください。
    • ランタイムライブラリ自体はgithubのvimリポジトリ等から取得するか、各所で配布されているVimから抽出するなどしてください。
  • Vim日本語メッセージファイル
  • vim.ja.po.zip
    • ランタイムライブラリへコピーするとメッセージが日本語化されます。
    • 可能ならソースと対応した最新版のja.poからvim.moを生成してください。
  • terminfo
  • terminfo.zip
    • (Linux等からコピーしてもかまいません)

実行環境

ビルドしたVimは特定のエミュレータやアプリに依存していないので、ほぼすべての端末エミュレータアプリやshellを扱うアプリで動作可能です。

定番といえるのは「端末エミュレータ(Android Terminal Emulator)」で多くのアプリの改変元になっています。

端末エミュレータ」(Google Play)

(注意)

ただしオリジナル版の「端末エミュレータ」上でVimを使用する場合は1.0.54の追加機能により不正終了することがあります。

これはVim固有の問題ではなく日本語を使用しなければ問題ないようですが、そうでない場合は他の端末エミュレータ系アプリか「端末エミュレータ改変版」のように対処済みのアプリを使用することをおすすめします。

「端末エミュレータ改変版」

日本語にこだわらない場合は特に問題ありませんが、筆者は日本語文書を扱う事が多いのでIME処理やUIに改変を加えた「Android Terminal Emulator改変版」でVimを動作させています。

またCtrlやTab等の通常入力しにくいキーもファンクションバーから簡単に入力可能になっています。

Android Terminal Emulator 改変版

インストールと環境設定

ビルドしたVimのバイナリは特定のエミュレータやライブラリに依存していないので単体でもandroidの標準shell上で動作します。このためほぼすべてのshellを扱えるアプリ上で動作可能です。

実行環境へのインストールですがandroidの各アプリには 「/data/data/パッケージ名」というデータ保存用の領域が用意されていて、このデータ保存領域ではファイルを実行可能なので、ここにVimのバイナリを置いて実行するという形になります。

したがって必要な手順は以下の通りになります。

  • Vimのバイナリを「/data/data/パッケージ名」以下の適当な場所へコピーして実行属性を付加
  • terminfoを適当な場所へコピー
  • Vimのruntimeライブラリを適当な場所へコピー
  • 環境変数を適切に設定

最低限設定しておいたほうが良い環境変数は以下の通りです。設定値は環境に合わせて変更してください。

export PATH=$PATH:/data/data/パッケージ名/path/to/bin
export TERMINFO=/path/to/terminfo
export TERM=screen-256color
export VIMRUNTIME=/path/to/vimruntime

最低限の日本語対応 vimrcとして以下を設定しておくと良いでしょう。

set nocompatible

set enc=utf-8

set fencs=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932,utf-16le,utf-16,default,latin1

let $LANG='ja_JP.UTF-8'

具体的な話は以下のドキュメントが参考になるかもしれません。