runtimeはプラグインをインストールする場所じゃないという話

コメント欄に書こうとしたけど一応記事として書いておいた方がいいことかなと思って記事にしてみました。

vimのインストールディレクトリに「runtime」というディレクトリがあり、その中に「doc」と「syntax」というディレクトリがある。それぞれのなかにさっき落とした***.jaxたちを vimのインストールディレクトリ > runtime > doc の中に、help_ja.vimvimのインストールディレクトリ > runtime > syntax の中にぶち込む。

helpを使う - tumblr


runtimeにhelpやプラグインをインストールするのは以下の理由から非推奨です。

  • runtimeはVimの配布側*1がメンテしてる場所なので、あとから入れてしまうと万一エラーが出た時に(どのプラグインがエラー出してるのか)問題の切り分けが難しい
    • 今回はhelpなので問題ないけど
  • runtimeはユーザがいじる場所じゃないのでそれを想定してないプラグインとかありそう
    • 今回はhelpなので(ry
  • (2011/07/05 06:29 追記) Vimを更新した際にruntimeも更新されるから
    • Windowsならおそらく手動アップデート*2だと思うので、今回頭から抜け落ちていた
    • ていうかLinuxだったらそもそもruntimeは/usr/share/vim/vim73なんてわかりにくいとこにあるからとりあえずそこにインストールしちゃえなんて思わないだろうけど
  • 管理が面倒 (以下後述)
  • 今流行のスタイルはpathogen.vimによるゆるふわbundleディレクトリ構成 (以下後述)


vim.exeと同じディレクトリのvimfilesってディレクトリに

  • vimfiles/doc/***.jax
  • vimfiles/syntax/help_ja.vim

みたいな感じで配置した方がいいです。


pathogenによるゆるふわ(ry

pathogenについてはいろいろと書かれている記事があるので詳しくはおググりください。
Vim Hacksにもちょうど日本語helpをpathogenを使って管理する例があります。
http://vim-users.jp/2010/11/hack183-2/


pathogen使えばこんな風に配置できます。

  • vimfiles/bundle/vimdoc_ja/doc/***.jax
  • vimfiles/bundle/vimdoc_ja/syntax/help_ja.vim

pathogenが便利だと思う例

  • bundleにgit clone {リポジトリ}とかでリポジトリそのまま持ってくれば使える
    • 多くのgithub上のプラグインがこの構成になっているため
    • pathogen.vim作者であるTim Popeさんが「こういう構成になってれば便利だよ」と触れ回ったから
  • vimdoc_jaの場合でもsvnで管理されてるのでsvn upすれば最新の状態にアップデートされる

gitとかsvnとか使ってなくても便利だと思う例

たとえばhoge.vimをアンインストールしたいって思った時に、以前なら

まずvimfiles/plugin/hoge.vimってファイルを削除して...あれhelpってついてたっけ...
じゃあvimfiles/doc/hoge.txtも削除して...(そしてvimfiles/syntax/hoge.vimを削除するのを忘れる)

でしたが、pathogen.vimのbundleの構成にしたがっていれば

bundle/hogeってディレクトリを削除

だけでアンインストールできます。


このように関連ファイルが1ディレクトリにまとめられると
インストール&アンインストールが楽になります。
「1ディレクトリにいろいろ関連ファイルをまとめて管理を楽にする」というのは
Vimのbundleだけの流れじゃないみたいですが、話が逸れるので次の記事で。

僕らが望んだ世界 (パッケージ管理システム)

まぁVimにもFirefoxみたいにアドオンマネージャもとい
プラグインマネージャがあればもっと楽なんですけど、
いろいろ乱立していて訳がわかりません。

VimJoltsはベータ版ですが、いつでもいつまでもfork&commit歓迎です。
しかし完成することはありません。
仕様は皆の心の中にあります。

*1:Vimの作者&メンテナであるBramさんのリポジトリとかkaoriyaのリポジトリとか

*2:kaoriyaはこんなの用意してるけど知ってる人ほとんどいないだろうな、最近だし