vimでjavaのプロパティファイルを編集する

  • 8
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

投稿が遅くなりましたが、この記事はVim Advent Calendar 2012の148日目の記事です。
前日はthincaさんによる、意外と知られていないdiffに関する機能でした。

さて今日の話題は、javaのプロパティファイルをvimから編集しやすくする、という話になります。
(本当はneocomplcacheとclang_complete、javacompleteを併用する際にハマったことについて書こうとしてたんですが、またハマったため予定変更しました。)
javaで文字列リソースを外部ファイルにまとめたいとき、一般的にはプロパティファイル(拡張子が.propertiesなファイル)が使われます。
実際のコーディングでは、java.util.ResourceBundleやjava.util.Propertiesといったクラスを用いて、プロパティファイルから読み込んだ文字列を利用するかと思います。

プロパティファイルを編集するとき困惑するのが、ascii文字しか含めることができない点です。
(仕様上、utf8を含めることができますが、ascii文字のみにしておいたほうが無難な気がします。)
なのでプロパティファイルに日本語を書きたい場合は、ユニコードエスケープした形式でascii文字のみに変換をかけます。
具体的には次のようになります。

example
# この日本語が
hoge=ほげ!
# このようにエスケープされる
hoge=\u307b\u3052\uff01 

一応、jdkに標準添付されているnative2asciiというツールを使えば、一発で変換してくれます。
そのため、executable('native2ascii')ならば、プロパティファイルを読み込んだ後に%!native2ascii -reverse、書き込む前に%!native2asciiを必ずきっちりと実行しておけば、日本語のプロパティファイルが楽に書けることでしょう。
\u307bというエスケープされた形式で編集するのもありではありますが、おすすめはしません。

いちいち、プロパティを編集する度に、%!native2ascii -reverse%!native2asciiを実行するのは、忘れそうで非常に怖いです。
なので、プラグイン作りました。

vim-edit-properties

※初プラグインなので、どなたか添削していただけると、大変嬉しいです。

機能としてはnative2asciiでバッファに対してフィルタかけるだけです。
v0.3から、native2asciiコマンドに依存しなくなりました。
今後、追加したい機能としては、

* 今開いているプロパティファイルと、他のロケール用のプロパティファイルとが持つキーを比較し、差分を表示する
* 他のロケール用のプロパティファイルに、簡単に移動できるようにする
    * 実装しました。`:help edit-properties-unite-interface`
* プロパティファイル群に対してのgrep
    * 実装しました。`:help :EditPropsGrep`

あたりを考えています。

以上、自作プラグインの紹介でした。

まとめると、vimでプロパティファイルを編集するには、

* 読み込み後に`%!native2ascii -reverse`を、書き込み前に`%!native2ascii`を実行する
* vim-edit-propertiesを使う(単なるマ)

です。

これでeclipseを使わなくてはいけない理由が1つ減り、vimに移行しやすくなったのではないでしょうか。
ここまで読んで頂いて、ありがとうございました。