unite-javaimportというプラグイン書いた。

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

この記事はVim Advent Calendar 2012の201日目の記事です。
前日は @IMAGEDRIVE さんの Vim Girl Ver 7.4(イラスト)を描いた でした。vim girlカワイイ。

今日の話題は、vimでjavaを書く際、import文を手軽に挿入するためのプラグイン unite-javaimport を作成しましたので、
そのプラグインを紹介させていただきます。

リポジトリ http://github.com/kamichidu/unite-javaimport

vimでjavaを編集しているときに、使いたいクラスがある度にファイル先頭まで戻ってimport文を記述するのが面倒でした。
現状、いくつかのプラグインはありましたが、気に入らなかったので作ってみました。
ちなみにまだアルファ版です。

unite-javaimportの概要

カレントディレクトリに.javaimportというファイルを用意し、次のような形式で設定を行います。
すると、列挙したパスやurlから取得できる型名がuniteインタフェイス上に列挙されます。

.javaimport
# this is a comment
{
    'path': 'path/to/directory',
    'javadoc': 'http://url/to/javadoc/',
},
{
    'path': 'path/to/jarfile',
    'javadoc': 'http://url/to/javadoc/',
},
{
    'path': 'http://url/to/javadoc',
    'javadoc': 'http://url/to/javadoc/',
},

pathは必須、javadocは省略可能です。
javadocを省略した場合、javadocのプレビュー機能は使えません。

少々わかりにくいと思うので、画像を用意しました。
絞り込みからimport文の追加が行われる様子がわかると思います。

1.png

2.png

3.png

4.png

unite-javaimportのインストール

NeoBundleをお使いなら、.vimrcに以下を書くだけです。

.vimrc
NeoBundle 'KamunagiChiduru/unite-javaimport', {
\   'depends': ['Shougo/unite.vim'], 
\}

javadocのプレビュー機能を使用する場合、w3m.vimをdependsに追加してください。

unite-javaimportの問題点

  • 非同期で候補取得をしていないので、初回実行時が遅い

unite-javaimportの依存関係

unite-javaimportの依存しているあれやこれを、以下に列挙します。

  • unite.vim
  • Exuberant Ctags 5.8 (他のctagsでも動くかも?未検証)
  • java runtime environment (jre) 1.6以上
  • wget or curl (javadoc取得に使用。またurlからの型名取得に使用)
  • w3m.vim (uniteのプレビュー機能でjavadoc表示に使用。javadocの表示を行わない場合は不要)

unite-javaimportに追加したい機能

  • static importを追加する
  • javadocを参照しながら絞り込みする(preview機能を使用予定)
    • 暫定的に実装しました。が、もう少し読みやすい形で出したいなぁこれ。
  • .javaimportでの設定方法をより良い形にする
    • yamlで設定するようにしてみた。設定方法を本記事に追記しました。
  • filetypeがjavaの場合にのみ、unite-sourceとして登録する(補完候補に出す)
    • Shougoさんからこういった機能はないと回答を頂きました。

(他に何かあるかな?)

最後に

unite-javaimportという自作プラグインをご紹介しました。
これでeclipseを使わなければいけない理由が1つ減ったと思います。
javaをvimで開発するためのプラグインは、後は補完周りかなぁ。

pullreqやissuesお待ちしています!

以上でvim advent calendar 2012の201日目の記事を終わります。
ここまでお付き合いいただきありがとうございました。