Android Studio最速入門~効率的にコーディングするための使い方

第44回 [最終回]vimキーバインドを提供するIdeaVIMについて

この記事を読むのに必要な時間:およそ 9 分

はじめに

唐突ですが今回が最終回です。今までも好き放題書いてきましたが,最終回はさらに趣味に走ってIdeaVIMプラグインだけの話をします。

IdeaVIMとは,名前から想像できるようにvimの機能を再現するプラグインです。それなりに再現度が高いこともあり,地味に人気のあるプラグインです。筆者はかれこれ10年以上,このプラグインを愛用しています。

IdeaVIMの歴史

プラグインの中でも古参のほうで,2003年にはすでに存在していました。もともとは一人の有志の方が作ったプラグインでしたが,作者のRick Maddyさんが「Java関係の仕事から離れそう」という事で,後継者を募ったところJetBrains社のOleg Shpynovさんが名乗り出ました。登場時から人気もあり,JetBrains社の人(いわゆる中の人)がコミッタになった事もあって,いつの間にかJetBrains公式プラグインとなりました。ただ,公式プラグインといってもAndroid StudioやIntelliJがvimモードを考慮した仕組みになっている訳ではありません。相変わらず無理を通してvimモードを再現しています。

JetBrains公式プラグインといってもオープンソースです。パッチ提供やバグ報告はいつでも歓迎です。

現在のコミッタは同じくJetBrains社のAndrey Vlasovskikhさんです。とても活発な方で,Twitterで「IdeaVIM~」とかつぶやくと,それが日本語だろうがお構いなしにメンションを打ってきます。どうやらロシア圏の方のようで普段はロシア語でつぶやいているのですが,その時は英語で問いかけてくるので,ビックリしないで相手をしてあげてください。それと一応,IdeaVIM専用のTwitterアカウントもあります(中の人は Andrey さんです)⁠

10年以上の歴史をもつプラグインということもあり,vimのエンジン部分はvim6をベースに作られています。世間的にvimが流行りだしたのはvim7からだと思うので,vim7ユーザにとっては若干物足りない実装になっています。それでもText-Objectsなど,ある程度vim7の機能も取り込んでいます。

IdeaVIMは結構まじめにvimっぽい動作をするプラグインですが,どうやってもがんばって真似てる域を脱することはありません。後でIdeaVIMの仕組みを紹介しますが,元々vimモードを考慮して作っていないモードレスエディタを無理矢理vim化しただけでも大したものなので,これを許容できるかどうかがIdeaVIMを使えるかどうかのポイントになると思います。

vimのような歴史あるエディタの愛用者は,それぞれ独自のこだわりを持っています。それ故,vim風,vim互換モードという謳い文句に期待しては落胆を繰り返していると思います。それなりにvimキーバインドの呪いにかかっている筆者が10年近くIdeaVIMを使い続けて得た教訓は寛容です。vim以外のエディタは何をどうしようとvimにはなれません。そこを呑み込んだ上でIdeaVIMに接しましょう。

平たく言うと「IdeaVIMはvimではなくて,vimっぽい操作ができるIdeaVIMという新しいエディタ」なのです。

その他のvimプラグインについて

世の中のvim使いの執念たるや凄まじく,どんな環境にでもvimキーバインドを持ち込もうとしています。探してみると,大抵どのIDEにもひとつはvimプラグインが存在してます。

Eclipse : Vrapper
IDE用vimプラグインの中で唯一 map コマンドを実装しています。vimscriptはサポートしていませんが,独自に surround.vim 相当の機能を実装しています。
この他にEclimというvimプラグインとしては反則レベルで完成度の高いプラグインがあります(vimからEclipseを使う,逆転発想のプラグインです)⁠
NetBeans : jVi
古くはJBuilderのviプラグインだったのをNetBeans用に移植したものです。もともと vi プラグインだったのですが,ここ最近のバージョンアップで vim の機能が追加されています。Ctrl-W系のウィンドウ分割機能など,割りと細かい点までvim風に仕上げている印象があります。
Visual Studio : ViEmu
今回紹介した中では唯一の有償プラグインです。Visual Studio以外にXcode, Word, OutlookやSQL Serverでも使えるようです。残念ながら筆者は使った事がありません。
Xcode : XVim
Xcode用のVimプラグインです。こちらも筆者は使ったことがありません。
Excel : Vimxls
Excel用のVimプラグインです。ここまで来ると執念すら感じられます。

vimそのものが魅力的なエディタであるのは間違いありませんが,このモードレスエディタ全盛の世の中でvimキーバインドに慣れてしまう事は,他の環境(エディタやIDE)を使う上でかなり不利な状況になりがちです。そんな中,vimだけに籠もらず,モードレスだとかお構いなしに色んな環境でしぶとくvimモードを再現しようと試みている作者の方々の執念には脱帽します。

IdeaVIMのインストールと諸設定

プラグインマネージャ(⁠Preferences / Plugins」⁠から「IdeaVIM」を選びインストールしてください。インストールが完了すると再起動を促すので,指示に従ってAndroid Studioを再起動します。再起動すると次のようなダイアログが表示されるので,ベースにしたいキーマップを選択します。

図1 ⁠Vim Keymap setting」ダイアログ

図1 「Vim Keymap setting」ダイアログ

※「Toolsメニュー」の "Reconfigure Vim Keymap" でいつでも再設定できます。

これでIdeaVIMが有効になります。見た目には変化が分かりませんが,Toolsメニューの"Vim Emulator"がONになっていることと,キーマップ設定(⁠Preferences / Keymap」⁠が"Vim"になっていることでIdeaVIMが有効になっていることがわかります。そうそう,カーソルがIビームからブロックカーソルに変わるので,これでもIdeaVIMが有効になっていることが分かります。

図2 Toolsメニューの"Vim Emulator"

図2 Toolsメニューの

※ IdeaVIMのON/OFFをここから制御できます。

図3 ⁠Preferences / Keymap」設定画面

図3 「Preferences / Keymap」設定画面

このあたりの仕組みについては後で解説するので,まずはIdeaVIMでどんなことができるのか紹介します。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai

コメント

コメントの記入