vital.vimを組み込んでみた

ブログ書くぞと意気込んでブログを初めてからしばらくして、ブログ書くぞ!と意気込んだ記事を書いてから書かずに早4日が経過。やっと書く。

初めてのvim pluginというわけで、vital.vimの便利機能を使ってみようと思ってvital.vimを組み込むことにチャレンジしてみた。

vitalって?

https://github.com/vim-jp/vital.vim

こやつ。

vim pluginを作るのを便利にするためにvim pluginに組み込むvim plugin。

こいつを使いたかったが、組み込み方(専門用語で「vitalizeする」方法)がわからなくて10分ほど苦戦したのでメモる。

githubの説明見て困る

そもそもvitalizeの説明がなかった。仕方ないのでぐぐる。

古い記事に引っかかる

http://d.hatena.ne.jp/thinca/20110310/1299768323

これを読んで、とりあえずgit cloneして、ruby vitalizer.rbしようと思ったが、vitalizer.rbとかない!

困った。

(ちゃんとググっていればこの記事が見つかりました。→vital.vim 近況

vimのことはvimに聞く

困ったら大体のことはhelpに書いてあるのを思い出したので、とりあえずhelpを見直す。

すると、:Vitalizeというコマンドがあるじゃないですか。これでやるらしい。

とはいえvital.vimがなきゃvitalizeできない。というわけで入れる。

NeoBundle 'vital.vim'を.vimrcに書き足して、NeoBundleInstallする。

と、エラーが出る!

Error generating helptags:
 Vim(helptags):E670: Mix of help file encodings within a language:.vim/bundle//.neobundle/doc/changes-v0.3.ja.txt

なんぞや。このへん(↓)見るとmacvim特有の問題かもしれない。今vimをmvim -vにaliasしているからな・・・。

仕方ないので~/.vim/bundleでgit cloneし直す。

これでhelpはないけどとりあえず使える。

let's Vitalize!!

これでやっと:Vitalizeできる!!

vimを開いて、:Vitalize /path/to/pluginするだけ!

これでディレクトリにautoloadディレクトリが作られ、そこにvitalディレクトリやvital.vimが作られる。素晴らしい。

使う

使うときは変数にvitalを格納してやるみたいですね。

s:Vとかに入れてやりましょう。

let s:V = vital#of('plugin name')

plugin nameは、Vitalizeしたpluginが入ってるディレクトリの名前みたいです。

いよいよvitalが使えると思ってsourceで開発中のプラグインを読み込んでみると、エラー!

Error detected while processing function vital#of:
line    4:
E605: Exception not caught: vital: version file not found: testtest

なんぞや。

しかし、ふと気付く。autoloadに入っているからって勝手に読み込まれやしないだろう。runtimepathに入ってないんじゃないかと。

適当なディレクトリで開発していたからruntimepathに入っていなくて読み込まれていなったのが問題だった。

runtimepathが通ったところに後で移すとして、とりあえず試すならsetl runtimepath+=.でいけるはず。

試してみる。

いけた!

というわけでまとめ。

まとめ

  • vital.vimをインストール
    • ex) NeoBundle 'vital.vim' & :NeoBundleInstall
  • プラグインを:Vitalizeする
    • :Vitalize {plugin dir}
  • 変数にvitalを格納する
    • let s:V = vital#of('plugin name')
  • 使いたい機能をimportする
    • let s:D = vital#of('data/dict')
  • 使い放題!
  • ※ runtimepath通ってないといけないので注意!
    • vim plugin開発するときはruntimepath通ってる所でするものかな・・w)