Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Eclim ことはじめ

$
0
0

OS X 環境で Java のコーディングに Eclim を使って始めたのでメモ。
ちょっとずつ更新していくつもり。

きっかけ

これまで Java を書くときは Eclipse を使ってきて慣れていたのだけど、LL(php,ruby,python,perl) を書くときは Vim を使っていた。
たまたま、Java と LL 両方書く機会が訪れたので、これ全部 Vim で書いたら結構気楽にやれるのでは?と考えたのが最初。

インストール

Homebrew + CaskNeoBundle使うとラク。

Cask で Oracle Java インストール

$ brew cask install java

さっくり Java 8 Update 20 が入った。Cask 素敵。

Cask で Eclipse インストール

homebrew-caskでインストール。

$ brew cask install eclipse-java

さっくり Luna (Eclipse 4.4) が入った。Cask 素敵。

NeoBundle で Eclim インストール

.vimrc に以下を追加して :NeoBundleInstallする

.vimrc
" for Java
    NeoBundleLazy 'ervandew/eclim', {'build': {'mac': 'ant -Declipse.home=/opt/homebrew-cask/Caskroom/eclipse-java/4.4.0/eclipse -Dvim.files='.escape(expand('~/.bundle/eclim'),'')}}
    autocmdFileType java NeoBundleSource eclim

ビルドプロセスに ant が要るので brew install antしておく。
eclim 自体は filetype が java のときだけ有効にしてみたりした。後で不便になったら考える。

eclimd 起動

$ECLIPSE_HOME以下(この場合は /opt/homebrew-cask/Caskroom/eclipse-java/4.4.0/eclipse/)に、eclim 関連のコマンドがインストールされているので、そこから eclimd を起動する。

$ $ECLIPSE_HOME/eclipse

Eclipse が普通に起動する。のだが、これだけだとまだ eclimd は起動していない。
詳しくは http://eclim.org/eclimd.html#headed-eclipse-serverに書いてあるが、Eclipse の console window に eclimd を追加して無事起動となる。

この設定は一度 Eclipse を終了させれば保存されるが、再起動のたびに eclimd の console を選択しなければ eclimd が起動せず大変にめんどくさい。勝手に起動して欲しいけど方法はわかってない。

vim と eclimd の疎通確認

Vim から :PingEclimで確認。

eclim   2.4.0.11-ge560abeeclipse 4.4.0

オッケー。

headless mode と headed mode

小話。eclimd には以下の二種類がある。

  • headed eclipse server (GUI あり)
  • headless eclipse server (GUI なし)

eclim は eclipse の機能のサブセットなので、デバッグ機能を使ったり特定の eclipse plugin の機能が欲しい場合は現状は前者を選ぶ他ないので、headed eclipse server で使うのが一般的だと思う。将来的に eclim だけで出来ることが増えてきたら、tty で全てが完結できる headless mode も魅力的ではある。

headless eclipse server は以下で起動する。

$ $ECLIPSE_HOME/eclimd

初期設定

:WorkspaceSettingして org.eclim.user.emailorg.eclim.user.nameを設定する(どこに使われるのかよくわかっていない)。

便利機能

Eclipse の機能が普通に使えるよといえばそれまでなのだけど、まあ vim 自体の機能と一緒に使えるのはそれはそれで便利。

おすすめ設定

Java の Suggested Mappingsに従うままに .vimrc を更新。

.vimrc
autocmdFileType java nnoremap<silent><buffer><leader>i :JavaImport<cr>autocmdFileType java nnoremap<silent><buffer><leader>d :JavaDocSearch -x declarations<cr>autocmdFileType java nnoremap<silent><buffer><cr> :JavaSearchContext<cr>autocmdFileType java letg:EclimJavaSearchSingleResult ='edit'

g:EclimJavaSearchSingleResultは vim のタグジャンプの挙動と合わせたかったので設定してみた(default は 'split')。操作感として vim のタグジャンプと統合されてると嬉しいけど贅沢は言わないことにする。

これだけでも <cr><C-o>でコードがどんどん読めるので、十分 Life Changing だなあ。

:ProjectProblems

QuickFix にエラーを表示してくれる。

:JavaValidate

叱ってくれる。醍醐味。普通に直したり :JavaCorrectで直したり。

:JavaRename

まあ便利。パッケージのリネームでたまにエラーが出るんだけど未解決。

:JavaFormat

まあ便利。保存と同時に動かしても良いかも。やろうと思えばすぐ出来るのが eclim の良いところ。

コード補完

デフォルトは omnifunc。あんまり使ってない。そもそも補完プラグインも入れてないからかも。
主要な補完系 vim plugins には対応している様子です。
http://eclim.org/vim/code_completion.html

所感

最初は Vim で Java のコードを書くためのニッチなプラグインなのかなと思っていたけど、どちらかというと Eclipse の機能と Vim の機能を両方使いたい(または組み合わせて使いたい)人向けの環境なのだと考えるようになった。

その他もろもろ。

  • コーディング中はターミナルから出ないで済むので快適
  • Eclipse と Vim の使用経験があると予想よりとっつきが良いものだと思う
  • Eclipse と Vim のブリッジにすぎないので eclim 固有のトラブルは少ない
  • Eclipse のサブセットといっても機能が多く、また全部の機能を使う必要もないと思う (Eclipse 自体がそうだし)
  • Java 8 で lombok 使ってる、みたいなモダンな Java だから良いと感じる、というのは正直あると思う
  • eclim 自体がプロジェクトとしてしっかりしてる感じがする。特にドキュメント。
  • サーバサイドのコードを複数の言語で書く人には薦められるかも。これで Android のコーディングしようとは思わないw
  • Vim と Eclipse の両方にロックインされてしまった感

やりたいこと

やりたいけどやり方がわかってないことを書いていく

  • eclipse 起動と同時に eclimd を起動(切実)
  • mvn eclipse:eclipse した後に再起動するのがめんどう

チートシートも読み込みが足りない様子だった http://eclim.org/cheatsheet.html

最後に

自分も eclim 使ってるよー、という方いらっしゃいましたら、コメントや編集リクエストお待ちしております。


Viewing all articles
Browse latest Browse all 5608

Trending Articles