Edited at

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

More than 5 years have passed since last update.

この記事は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日目の記事を終わります。

ここまでお付き合いいただきありがとうございました。