ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

iOS用のVim (Vi IMproved)がApp Storeで配信開始!

      2016/05/12

Vimforios icon

何と、iOS用のVimがApp Storeで配信開始されています!

iPhone / iPad両対応のユニバーサルアプリケーション。

とりあえず、iPadで動かしてみましたが、確かにVimです(続きは[Read More]から)

Vim (Version 1.0.0) App
カテゴリ: 仕事効率化
価格: 無料
デベロッパ名: Applidium
リリース日: 2012/01/18
対応デバイス: 全機種
現Ver.の平均評価: (無し / 0件の評価)
通算の平均評価: (無し / 0件の評価)
Game Center: 非対応

制約事項

いくつかの制約事項があるとのことです。

Applidium — Vim Applidium — Vim
  • Vimはsandboxの中で動いているので、編集できるのは$HOMEの中のファイルのみ。そのほかのファイルはリードオンリー
  • Vimは外部のバイナリを実行できない。これはiOS SDKの制約で、対処のしようがない

デフォルトでは「\(バックスラッシュ)」がEscキー

iOSのキーボードからは、Tab、Esc, Ctrl, Meta(Alt)などたくさんのキーが欠けています。

Vim for iOSでは、キーボードアクセサリにこれらのキーを追加するアプローチを取るのでなく、標準のキーボードだけで使えるように考えてあるそうです。

Escキーが無いとインサートモードから抜けることができませんが、デフォルトでは「\(バックスラッシュ)」キーにEscが割り当てられています。

1本指でのタップとドラッグは、マウスのクリックとドラッグに相当。

2本指での水平、垂直ドラッグは、マウスホイールイベントを生成。

外付けキーボード待望論へ一言

外付けキーボード対応待望論というものが当然出てきますが、iOS SDKの範疇ではCtrl、Esc、Shift、Option、CommandなどのModifierキー、カーソルキー、ファンクションキーの押下を判定できません。

オープンソースなので、対応版のforkを作って、iOS Developer Programに加入した開発者、ないしは開発者からAd-Hocビルドを配布された人の間で使うというぐらいしかできませんね。

iTunesファイル共有に対応

$HOMEディレクトリ(Vim.appのsandbox内のDocumentsディレクトリ)がiTunesファイル共有から見えるようになっているので、そこでファイルの出し入れができます。

初期化ファイル.vimrcにも対応

起動時に$HOME/.vimrcを読み込みます。

$HOMEは、コマンドモードで以下を実行してみると分かります。


:echo $HOME

.vimrcの中身を書いて、


:w .vimrc

で保存。次回の起動時からその内容が読み込まれます。

.vimrcには、今のところ以下のように書いています。


syntax on
set number
set list
map! €
map! £
map! ¥
map! ?
map! \ ?

€(ユーロ)と£(ポンド)にカーソルの上下。

¥にCtrl+N。

?にEsc。

\(バックスラッシュ)に?を割り当てていますが、反映されませんね。このままだと?が入力できないので思案中。

カーソルの上下があると「:」の後に上下でコマンドのヒストリがたどれます。

Ctrl+Nがあると、Dynamic Abbrevが使えます。例えば、「hoge hage」と打った後にスペースを空けてhと打ち、Ctrl+Nすると意味が分かると思います。

IMG 0035

補完候補はカーソルの上下、ここでは€(ユーロ)と£(ポンド)ですが、それで選択できます。

このデフォルトのキー割当は、「Vim.app/vimrc」で設定されていますが、これをコメントアウトしても、.vimrcで上書きしてもまだ有効です。どうすりゃいいんでしょう。

Netrwでうれし恥ずかしiOSファイルシステム探索

Vimにファイラーがあったよなーとつぶやいていると、神計算機アプリCalqum2作者 @cocopon さんが「:e .」であると教えてくれました。

Calqum App
カテゴリ: ユーティリティ
価格: ¥170

「j」、「k」でカーソルを上下。「Enter」でディレクトリ下降、「-」で上昇のはずですが、「Enter」の方が効きません。

しょうがないので、下る場合は「o」を使い、ウインドウ分割。「:only」で他のウインドウを閉じるというやり方でディレクトリ探索してみました。

「:only」は一度入力すれば、あとは「:」、£(ポンド)でヒストリから呼び出せますね。

「Enter」が効くようになる設定方法はあるんでしょうか?


:e /

これでルートディレクトリが見えてしまいます。「o」でディレクトリを降り、「:only」でほかのウインドウを閉じる。この繰り返しです。

IMG 0040

ディレクトリでなく、ファイルだった場合は「o」でそのファイルを開きます。

Vim早見表 App
カテゴリ: ビジネス
価格: ¥85

公式ページにあった制約事項の通り、VimのDocuments以外はリードオンリーです。

ブックマークプラグインのインストール

Vimにプラグインを追加しましょう。

追加できるんです!

次なるステップのためにFavEx.vimというプラグインをインストールします。

FavEx.vim : お気に入りファイル、お気に入りディレクトリ管理 — 名無しのvim使い FavEx.vim : お気に入りファイル、お気に入りディレクトリ管理 — 名無しのvim使い

プラグインは$VIMRUNTIMEを起点としてインストールします。

Vim for iOSの$VIMRUNTIMEとはどこのことでしょう?

以下で分かる通り、「/var/mobile/Applications/xxxxxx/Vim.app/runtime/」です。


:echo $VIMRUNTIME

$VIMRUNTIMEにプラグイン関連のファイルを設置するためにはiPhone Explorer、現iExplorerが必要です。

iExplorer – Formerly iPhone Explorer, is an iPhone browser for Mac and PC iExplorer - Formerly iPhone Explorer, is an iPhone browser for Mac and PC

iExplorerは、Mac/PCとUSBケーブルで接続されたiPhone/iPadへ、ファイルの受送信が可能なアプリケーションです。

通常は不可能な、アプリケーションバンドル内へのファイルの設置、ファイルの取得、ないしは削除が可能です。

iExplorerでVimのディレクトリを探します。そして、「Vim.app/runtime/plugin/」へfavex.vimを設置。「Vim.app/runtime/」へfavlistを設置。

Vimforios01

そしてVimを再起動すればインストール完了。

ニワカなのでそうしていますが、emacsにおけるload-pathの設定のようなことができるのであれば、そうしてください。

どっちみちiTunesファイル共有で所定のディレクトリにファイルを設置するのは難儀なことなので、iExplorerを使った方が確実かと思いますが。

2012.01.23追記: 「Documents/.vim/plugin」への設置でもいいかもしれませんね。favlistは、「Documents/.vim/」への設置になるでしょうか。こちらであればバージョンアップ時にも消えないでしょう。この場合であれば、vim.appというディレクトリをMac/PC上で作り、その中にpluginディレクトリとプラグインを内包、一度iTunesファイル共有で転送した後でvim.appを.vimにリネームするという方法が取れ、iExplorerは不要かもしれません。既に.vimディレクトリがあれば、まずそれをPC/Macに転送する手順が必要かもしれません。Macの場合はそのままだとFinderで不可視になりますから、コピーする前にvim.appなどにリネームするべきでしょう。

アプリケーションバンドル内のファイルをいじる場合の注意

プラグインに限らず、Vim.app/vimrcなどアプリケーションバンドルの中のファイルは、アップデートがあった場合に(加えた変更が)消え失せると思いますので、それを前提とした運用をしてください。

そしてまさかのGoodReader連携

sandbox外のファイルが開けるなら、ぜひGoodReaderのDocumentsディレクトリを探したいところ。

GoodReader for iPhone App
カテゴリ: 仕事効率化
価格: ¥450

GoodReader for iPad App
カテゴリ: 仕事効率化
価格: ¥450

なぜなら、GoodReaderはファイル転送クライアントとして高性能である上、Open Inにも対応しており、他アプリケーションからファイル受け取りをすることも可能で、なおかつzipファイルの解凍などにも対応していますから、GoodReaderのDocumentsディレクトリは一大ファイルハーレムとなるからです。

Dropboxクライアントなどはファイルをデータベース化しているので外からいじるのが難しいですが、GoodReaderはDocumentsディレクトリの中にファイルがそのまま置かれているのも魅力。


:e /var/mobile/Applications/

これで各アプリケーションのsandboxの一覧が見えます。この中にGoodReaderのディレクトリがあるはずですが、各sandboxは無意味な文字の羅列でどれがどれやら分かりません。


:e /var/mobile/Applications/**/GoodReader

このように、各アプリケーションのsandboxがあるパスをアスタリスク二つのワイルドカードにし、続けてGoodReader.appないしはGoodReaderIpad.appがあることを想定して「GoodReader」と続けてTabキーを押します。

ちなみに、Tabキーは外付けキーボードからしか押せないはずですので、このときだけでもつないでおきます。

適当なキーにTabをmapしても「^I」というコントロールコマンドが入力されるばかりかと思います(ニワカなのでよく分かってない)。

すると、しばらくのハングアップが続いた後に、アスタリスク二つの部分が実際のsandboxの名前として補完され、以下のような感じで補完が完了すると思います。


/var/mobile/Applications/xxxxxx/GoodReaderiPad.app/

僕はかなりインストールするアプリケーションの数を絞っているにもかかわらず、それでも結構時間がかかるので、アプリケーションをたくさん入れている人は、この手法を断念した方がいいかもしれません。

この状態でenterを押すと、GoodReaderのアプリケーションバンドルの中が表示されます。ここから「-」で階層を一つのぼり、さらに「j」、「k」で上下してDocumentsディレクトリで「o」で、やっと目的のGoodReaderのDocumentsディレクトリに到達します。

まず「c」でカレントディレクトリを移動してから、ここで以下のコマンドを実行すれば、FavExにGoodReaderのDocumentsディレクトリがブックマークされます。


:FDirectory

ブックマークからの呼び出しは、以下を実行。


:FExplore

ちなみに、ファイルを開いているときに以下で、ファイルのブックマークです。


:FFile

sandboxのパスは、確かアップデートのたびに変わったかと思いますので、GoodReaderのアップデートの後、ブックマークから移動できなくなったらこの手順を繰り返してください。

▼GoodReaderのDocumentsディレクトリにあるJavaScriptファイルをVim for iOSで開いた例。この後、:onlyしてウインドウ分割を解除、さらにソフトウェアキーボードをしまうと全画面表示になります。指2本ドラッグでスクロール。

IMG 0039

繰り返しになりますが、VimのDocumentsディレクトリ以外の場所のファイルはリードオンリーなので、編集はできても、その場には保存できません。

以下のようにすることで、VimのDocumentsディレクトリに開いているファイルを保存できます。VimのDocumentsディレクトリに保存したファイルをiTunesファイル共有、iExplorer、つまり母艦経由以外の手段で外に持ち出す方法は今のところ無いと思います。

iPhone/iPad単体で使っている間は一方通行というわけですね。


:w $HOME/hoge.txt

ただ、どこにあるファイルでも、特にここまでの手順でブックマークに登録したGoodReaderのDocumentsディレクトリに置いたファイルなどは、すぐにVimで開いてシンタックスハイライティングを効かせてほぼ全画面でファイル閲覧でき、「/keyword」と「n」「N」で検索できますから、それだけでも便利かと思います。

やはりOpen Inとキーボードアクセサリ対応に期待

すごいですね、Vim for iOS。シンタックスハイライティングに対応してるのは貴重です。

しかし、Ctrlが使えないと何かと不便ですし、Open Inや外部ストレージに対応していないと、制約が大きい。

やはりその辺りの発展に期待したいところですね。

日本語は当然のごとく入力できませんし、表示もできないようです。UTF-8で処理されているようですが、フォントがCourier決めうちになっているっぽいですね。

表示さえどうにかなってしまえば、skk.vimで日本語入力まで持っていけるかもしれないですね。

日本語表示

@h_east さんが日本語表示に成功されました!


:set enc=utf-8

でOKとのことです。こいつは楽しくなってきました。

オープンソース

@grandeforesta さんからの情報。当然といえは当然ですが、オープンソースとのことです。

ナイスなforkを期待。

Vim App
カテゴリ: 仕事効率化
価格: 無料

Vim早見表 App
カテゴリ: ビジネス
価格: ¥85

最新型iPhone 4/4S用バックライト付きケース一体型キーボードが約半額に! | ひとりぶろぐ 最新型iPhone 4/4S用バックライト付きケース一体型キーボードが約半額に! | ひとりぶろぐ

 - iPad, iPhone