Help us understand the problem. What is going on with this article?

人類は 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 を一通り見ておくと良いと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした