Vim でJava を書く環境を整えました。
取り上げないけれど、入っていると心が豊かになるであろうプラグイン達
javaid.vim
javaid.vim
Java 用の拡張シンタックスファイルです。詳細なシンタックスハイライトが有効になります。
取り上げてはみましたが、
Vim デフォルトのシンタックスハイライトでも十分な感じがしますし、
ファイルの最終更新日が結構古い (2005 年) 上に、Github 等に
リポジトリが無くて、
プラグイン管理するのがダルく感じたので使ってません。
javacomplete
vim-scripts/javacomplete · GitHub
Java 用のOmni 補完プラグインです。このプラグインをインストールするとOmni 補完が有効になります。
neocomplcache と組み合わせると強力です。が、上手く動かないケースがままあるので、
その時は
なんかで手動でOmni 補完を叩き起こす必要があります。
あと、インストール後の初期状態でこのプラグインを扱うと、
VimにJava補完のjavacompleteをインストール - 30日でいいのでプログラミング
で言及されているように、ホームディレクトリ以下にReflection.class が生成されて気分が悪くなります。
解決するためにはインストール後にプラグインに含まれているReflection.java ファイルをコンパイルする必要があります。
僕はNeoBundle を使っているので、以下のように書いて使っています。
こうすると (インストール | アップデート) 時に自動的にコンパイルを通してくれるので便利です。
NeoBundleLazy 'vim-scripts/javacomplete', {
\ 'build': {
\ 'cygwin': 'javac autoload/Reflection.java',
\ 'mac': 'javac autoload/Reflection.java',
\ 'unix': 'javac autoload/Reflection.java',
\ },
\}
vim-scripts/java_getset.vim · GitHub
アクセッサの記述をサポートしてくれるプラグインです。地味に便利です。
ただ、オリジナルの
java_getset.
vim が生成するアクセッサは
public String getFoo()
{
return foo;
}
みたいな感じで
GNU スタイルなのに加えて、this キーワードがメンバ変数に付加されないので、
その辺を改造したオレオレプラグインをfork して作りました。
*3
moznion/java_getset.vim · GitHub ← コレ
このオレオレプラグインでは新たに"b:javagetset_enable_K_and_R" と"b:javagetset_add_this" という変数を作ったので、
let b:javagetset_enable_K_and_R=1
let b:javagetset_add_this=1
という風に.vimrc 等で指定してやると、
public String getFoo() {
return this.foo;
}
というゲッタ (あるいはセッタ) を返してくれるようになります。
そんな感じで
環境を整えてみましたが、
Java を書くならなんだかんだでIDE の方が良いと思います。
IDE の方がいいと思う理由
Vim は
Java を書く人が少ないのか、プラグイン等が少ないので他言語と比べると物足りないです。
というか、
Java に関してはIDE、特に
Eclipse が最強すぎます。
特に
Eclipse は、
- リアルタイムコンパイル
- めちゃくちゃ強力な補完
- CheckStyle やFindBugs 等の外部プラグインと簡単に連携が取れる
- Maven やらAnt やらGradle といったビルドツールとも親和性が高い
- リファクタリング機能
- (頭の良い)シンタックスハイライト
- キーマッピングによる、痒い所に手が届く機能へのイージーアクセス化
なんかが強すぎです。(あと、
Android アプリの開発環境なんかも整ってますね)
その影響で「わざわざ
Vim で書かなくても……」という感じになって、皆さん
Eclipse で
Java をお書きになるのでは無いでしょうか。
割と僕もそう思ってて、ある一定よりも規模の大きいプロジェクトになってくると、やっぱりIDE の方が強いなーと実感します。
あと偏見かも知れませんが、そもそも
Java での開発って全体的に重い感じがします。
リアルタイムでコンパイルしてみたり、
CheckStyle を走らせてみたり……といった重い処理を
Vim にやらせるのは何か変な気がします。
Vim にはできるだけ軽く、自分が望んだ最低限の事のみをこなして欲しいので、
そう考えると
Java での開発はIDE に任せたほうが良いのかなーと思うなどしました。
ただ、書き捨てるようなプロトタイプ的なプログラムを書く分には
Vim でも十分いけるとは思います。
でも、普段使いは
Eclipse +
Vrapper になるのかなー、という感じです。
(補足) Java のシンタックスハイライトについて
僕は以下のように書いています。こう書くと良い感じに色鮮やかになります。
let g:java_highlight_all=1
let g:java_highlight_debug=1
let g:java_allow_cpp_keywords=1
let g:java_space_errors=1
let g:java_highlight_functions=1