Java
Vim
Eclipse

人類は Java をターミナル内で書く手段を確立していた

More than 5 years have passed since last update.

X なしで Eclim を使う方法。


導入

Vagrant や Docker の流行により、気軽に仮想マシンを使う時代になっています。すると開発にも仮想マシンを使うようにしてホストマシンはできるだけ汚さない方向に持って行きたいことになる。手軽に使いたいため当然 X 環境などは構築しない。

ここで問題になるのは IDE を前提にした言語。 IDE はウィンドウシステムの中で動くため、仮想マシンを X なしで使うと IDE の機能を使えず開発が厳しくなってくる。

具体的に言うと Java 、ジャバ、ジャヴァである。

書くときはあまりにも長い名前をタイプしたくないため補完が欲しくなり、読むときは名前解決のためのタグジャンプが欲しくなる。

追記

僕のモチベーションは VM の中に開発環境を閉じ込めてしまいたくて、かつ X を使いたくないところにあります。そうじゃない人はホストマシンで開発なり VM で X 使うなりしたほうが幸せだと思います。


Eclim

Eclim は Eclipse の機能を Vim を始めとする各種エディタで使うインターフェースを提供するソフトウェアです。ネットワーク越しに Eclipse の機能を叩いています。

ウィンドウシステムありの環境においては、 Eclipse と Vim のインターフェースを両方使いたいか否かによって、次の使い方があります。


  1. Eclipse を立ち上げず、 Eclim デーモンを立ち上げて Vim で Eclim と通信

  2. Eclipse を立ち上げて、外部エディタとして Vim で Eclim と通信

  3. Eclipse を立ち上げて、 Eclipse 内に埋め込まれた Vim で Eclim と通信

ここでは X 環境を構築しないので、 1. の使い方をすることになります。


必要なもの


  • Eclipse 4.3.2

  • Eclim 2.3.2


    • 最新版の Eclim 2.3.4 では動かなかった



  • Xfvb


    • 仮想 X サーバ



  • build-essential とかそのへんのやつ


インストール

Ubuntu では

$ sudo apt-get install openjdk-6-jdk xvfb build-essential

$ wget <eclipse_mirror>/eclipse-<version>-linux-gtk.tar.gz
$ tar -zxf eclipse-<version>-linux-gtk.tar.gz
$ java -Dvim.files=$HOME/.vim \
-Declipse.home=$HOME/eclipse \
-jar eclim_2.3.2.jar install

こんな感じです。

Eclim 2.3.4 および 2.3.3 では動かなかったので 2.3.2 を使っています。


使い方

Xvfb で仮想 X サーバを立ち上げて、その上で Eclipse および Eclim を起動し Vim から利用します。

$ Xvfb :1 &

$ DISPLAY=:1 ./eclipse/eclimd start

すると Eclim デーモンが立ち上がるので、 Vim を立ち上げて

:PingEclim

でバージョンが返ってくることを確認。

:ProjectCreate /path/to/my_project -n java

でプロジェクト作成。


補完

$ mkdir -p /path/to/my_project/src/a/b/c

$ vim /path/to/my_project/src/a/b/c/X.java

package a.b.c;

class X {
public static void main(String[] args) {

}
}

ここまで書いたところで、 main の中に

System.

と入力して <C-x><C-u> を入力しましょう。すると補完候補が表示されるはず。他にも、次のように

package a.b.c;

class X {
private static ArrayList<Integer> lst = new ArrayList<Integer>();
public static void main(String[] args) {
System.out.println("Hello, Eclim!");
}
}

ArrayListimport 宣言がありませんが、 ArrayList の上にカーソルを持って行き :JavaImport と叩くと import を追加してくれます。また、この lst について

lst.<C-x><C-u>

ArrayList のメソッドも補完してくれます。


タグジャンプ

package a.b.c;

class Y implements Runnable {
public void run() {
System.out.println("Hello from Y");
}
}

package a.b.c;

class X {
public static void main(String[] args) {
Y y = new Y();
y.run();
}
}

run の上に行き :JavaSearchContext でクラス Yrun() メソッドにジャンプできます。


他の言語

http://eclim.org/vim/index.html によると


  • C/C++

  • Html / Css

  • Java

  • Javascript

  • Php

  • Python

  • Ruby

  • Scala

  • Xml / Dtd / Xsd

に対応しているらしい。僕も Scala で使いたいので試してみる。


コマンド一覧

http://eclim.org/cheatsheet.html を一通り見ておくと良いと思います。