改めてvimでGroovyのコードを書く為の準備 2012年版/勉強用にちょっとしたスクリプトを書きたい人向け

vimでGroovyのコードを書けるように準備しようと情報を漁ってみたのだけど、微妙に内容が古いようだ。

例えばGroovyの公式サイトvim用のプラグインが2つ掲載されているのだけど、最近のvim(例えばKaoriya版)を使っているならシンタックスハイライト用のプラグインは同梱されているので入れる必要はない。それに id:eel3:20120728:1343451534 で書いたようにftpluginの方のgroovy.vimは微妙に問題がある。

このままでは私のようにvimの設定周りに詳しくない人が古い情報を鵜呑みにしてしまい、

  1. よーしパパvimでGroovyの勉強しちゃうぞー
  2. よーしパパgroovy.vimを2つも入れちゃうぞー
  3. (Groovyのサンプルを写経し始めて30秒経過)
  4. Groovyのコード書くのにvimが全く使えない件
  5. やっぱり時代は○○*1だよね!

――こんな風に間接的に他のエディタのシェアを押し上げてしまうのではないかと心配で夜も眠れず朝起きれない。

いやいや、ここはヘボいとはいえvim教の信者Lv.2として何とかせねば。信教というものは信じていない人々にこそ手厚いものですがな。

1. Groovyをインストールする

内容は割愛。ちなみに最近はGROOVY_HOMEを定義しないのが定説らしい。

2. vimは新しいバージョンを使う

まあLinuxとか使っていてリポジトリvimが古いからといって無理してソースからビルドする必要はないけど、Windows使いなら新しいバージョンのバイナリに乗り換えたほうがよいと思う。

何故なら最近のvimはGroovyのシンタックスハイライトが有効で且つ拡張子が .groovy なファイルをGroovyのコードとして自動的に認識するから。

もし不幸にもGroovyのシンタックスハイライトが有効じゃない古いvimを使わなくてはならないのなら、ftdetect の中に以下のような内容の groovy.vim を置いて、

au BufNewFile,BufRead *.groovy  setf groovy

その上で古いけどこのシンタックスハイライトの定義ファイルを使うか、又は一か八かKaoriya版あたりのアーカイブからGroovy用の定義ファイルを抜き出して使ってみることになる。

3. groovy.vim(ftpluginの方)を入れて自動インデントを有効にする

これ。自動インデントは不完全らしいけど、無いよりはマシ。

ちなみにバグ修正版のパッチを id:eel3:20120728:1343451534 に載せてあるので、興味がある人は適用してみてもよいかも。

4. インデント幅などを変えたい場合

Groovyのコードを編集する時だけインデント幅を変えたいとかタブ/スペースでインデントしたい場合は、例えば以下のような内容のファイル groovy.vim を after/ftplugin に置いておく。

if !exists("b:did_ftplugin")
  finish
endif

setlocal expandtab
setlocal tabstop=2 shiftwidth=2 softtabstop=2

" Undo the stuff we changed
let b:undo_ftplugin = (exists('b:undo_ftplugin') ? b:undo_ftplugin . ' | ' : '')
	\ . "setlocal et< ts< sw< sts<"

ちなみにこれは「スペースでインデント、幅は半角スペース2個分」という設定。タブでインデントしたいのなら expandtab ではなく noexpandtab だろうし*2、インデント幅を変えたい場合は tabstop その他の値を変えることになる。

5. quickrun.vim

groovy.vimでも編集中のスクリプトファイルを実行したりコンパイルしたりすることが可能だけど、最近はquickrun.vimとか使うらしい。

私はまだ使っていないけど、ちょっとみた感じだとquickrun.vimの方が柔軟そうだ。

*1:○○にはvim以外のエディタ・IDEをどうぞ。

*2:元々タブでインデントできている環境なら noexpandtab する必要すら無い。