Vimのランタイムパスを確認する(runtimepath)
プラグインを手動でディレクトリに配置したのに読み込まれません。原因を探るには、まずVimがどこを見に行っているのか、その検索先一覧を知る必要があります。
目次(8項目)
runtimepathを確認する
:set runtimepath?
:set rtp? " 省略形
設定ファイルやプラグインを読み込む対象ディレクトリの一覧が、指定された並び順で表示されます。この並び順どおりに検索・読み込みが行われるため、同名のファイルが複数の場所にある場合は先に見つかったほうが優先されます。
ディレクトリを追加する
set runtimepath+=~/my-vim-plugin
手動でプラグインを配置した場所や、自作のスクリプトを置いたディレクトリを検索対象に加えたいときは、このように追記します。プラグインマネージャを使っている場合は通常自動的に設定されるため、意識する場面は限られます。
読み込みの確認は:scriptnamesとセットで
runtimepathはあくまで「検索先の候補」であって、実際に読み込まれたかどうかまでは分かりません。設定を追加したのに反映されない場合は、:scriptnamesで実際に読み込まれたファイルの一覧も確認し、両方をあわせて切り分けると確実です。
| コマンド | 確認できること |
|---|---|
:set rtp? | 検索対象ディレクトリの一覧(あくまで候補) |
:scriptnames | 実際に読み込まれたファイルの一覧(結果) |
runtimepathに含まれているのに読み込まれていないなら、ファイル名や配置場所の規約(plugin/ディレクトリ配下かどうかなど)を疑います。
設定ファイル自体の場所も含まれる
runtimepathには、プラグイン用ディレクトリだけでなくvimrc/init.lua本体の置き場所も含まれています。設定ファイルの読み込み優先順位を意識したいときや、複数の設定ファイルを使い分ける環境を作りたいときにも、この一覧が判断材料になります。
Windows/Linux/Macでのデフォルトの違い
デフォルトのruntimepathにはOSごとに異なるパスが含まれています。トラブルシューティングで他の人の設定と見比べる際は、OSの違いによるパスの差を前提に読むと混乱が少なくなります。
runtimepathに対象のディレクトリが含まれているかを確認します。含まれているのに読み込まれない場合は:scriptnamesで実際の読み込み状況もあわせて調べます。
自作のスクリプトを配置したのに読み込まれず悩んだとき、runtimepathにそもそも対象ディレクトリが含まれていないことに気づいて解決したことがあります。プラグインマネージャに任せきりだと意識しない設定ですが、自分でファイルを配置する場面では欠かせない知識だと実感しました。以来、新しい環境を作るたびに一度は内容を眺めるようにしています。
Neovimではpackpathも関係する
Neovimではruntimepathに加えてpackpathというオプションもプラグイン検索に関わります。ネイティブのパッケージ機能(:h packages)を使う場合はこちらも合わせて確認する必要がありますが、多くのプラグインマネージャは内部でこの仕組みを利用しているため、直接意識する場面はそれほど多くありません。
まとめ
runtimepathはVimがファイルを探しに行く場所のリストです。プラグインや設定が読み込まれないトラブルの切り分けでは、まずここを確認するのが基本になります。