パーソナルツール

vimエディタのプラグインファイルの置き場所を変更する

作者: 小見 拓 最終変更 2012年01月08日 11時56分

vimエディタがどのディレクトリから設定ファイル、プラグインファイルを 読み込むのかを決定しているのが「runtimepath」オプションです。 「runtimepath」オプションの値はディレクトリのリストで、 vimエディタは起動時、「runtimepath」オプションで指定されたディレクトリから、 スクリプトファイルを順々に検索し、ロードします。 (Windows, Mac)

概要

vimエディタがどのディレクトリから設定ファイル、プラグインファイルを 読み込むのかを決定しているのが「runtimepath」オプションです。
「runtimepath」オプションの値はディレクトリのリストで、 vimエディタは起動時、「runtimepath」オプションで指定されたディレクトリから、 スクリプトファイルを順々に検索し、ロードします。

「runtimepath」オプションの設定の変更方法

オプションのフォーマット

「runtimepath」オプションの設定のフォーマットは次の通りです。
オプションの値として、ランタイムファイルのディレクトリのリストを、 カンマで区切って指定します。

" ディレクトリをカンマで区切って並べる
:set runtimepath={ディレクトリA},{ディレクトリB},{ディレクトリC},{ディレクトリD}

また、次のようにオプションを設定すると、既存の設定に追加する形で、 プラグインの検索ディレクトリを追加できます。

" 検索ディレクトリを後ろに追加
" A,B,Cという設定にDを追加したら、A,B,C,Dになる
:set runtimepath+={検索ディレクトリ}

" 検索ディレクトリを前に追加
" A,B,Cという設定にDを追加したら、D,A,B,Cになる
:set runtimepath^={検索ディレクトリ}

ディレクトリの前後が問題になるのは、スクリプト間で読み込み順の依存性がある場合か、
ファイルを入れ替えずにプラグインの挙動を変えたいような時だけで、
既存設定の後ろにディレクトリを単純に追加しても基本的には問題ありません。

どのように設定すべきか

vimエディタの「runtimepath」オプションは、デフォルトでは次のように設定されています。

Windows環境
$HOME/vimfiles,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/vimfiles/after

Mac OSX環境
$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after

Note

「after」ディレクトリに置いたプラグインが、通常のプラグインを読み込んだ後で読み込まれるのは、
「runtimepath」オプションでプラグインの読み込み順が設定されていたためです。

「runtimepath」に検索ディレクトリを追加する場合、特に理由が無ければ、

:set runtimepath+={ディレクトリ}

もしくは、

:set runtimepath+={ディレクトリ},{ディレクトリ}/after

と設定することをお勧めします。

どの設定ファイルで定義すれば良いか

「runtimepath」オプションの設定は、「$HOME/.vimrc」、もしくは「$HOME/_vimrc」設定ファイルで定義します。
それ以外の設定ファイルで「runtimepath」オプションを設定しても、 プラグインを読み込んでしまった後に設定が反映されることになるので、 設定を変更した意味があまりなくなります。

「runtimepath」オプションのいろいろな利用方法

Widows環境とMac OSX環境で、同じユーザ設定ファイルディレクトリ名を使用する

vimエディタの拡張用のプラグインは、通常は、 Windows環境では「$HOME/vimfiles/」ディレクトリに、
Mac OSX環境では「$HOME/.vim/」ディレクトリに置きますが、
「runtimepath」オプションの設定を変更すれば、同じ名前のディレクトリを使用できます。

" Windows以外の環境が、Windows環境にあわせる
:set runtimepath+=$HOME/vimfiles,$HOME/vimfiles/after

" Windows環境が、Mac OSX環境にあわせる
:set runtimepath+=$HOME/.vim,$HOME/.vim/after

プラグインの検証用のディレクトリを用意する

vimエディタのプラグインの検証をする際に、あるいは、プラグインを開発する際に、
テスト用のディレクトリを用意し、そのディレクトリにプラグインをインストールする。
通常と異なるディレクトリにインストールすることで、 不要になった時に、テスト中のプラグインを排除しやすくなります。

" テスト用ディレクトリを用意して、そのディレクトリで作業する
:set runtimepath+=$HOME/test

既存のプラグインの挙動を変更する

既存環境にインストールされたプラグインの改良版プラグインを、
「runtimepath」オプションを変更して(オリジナル版より)先に読み込ませることで、
ファイルの入れ替え無しにプラグインの挙動を変更できます。

" 修正版プラグインを入れたディレクトリを先に読み込ませる
:set runtimepath^=$HOME/fix

次のような二重読み込み防止のロジックが組み込まれているプラグイン限定で使用できる方法です。
(二重読み込み防止が無いなら、普通に後から読み込んだスクリプトで挙動を上書きできる)

:if exists("g:loaded_XXXXX")
    :finish
:endif
:let g:loaded_XXXXX = 1

複数の環境で共通する設定ファイル、プラグインをまとめて管理する

vimエディタの拡張用プラグインと、設定ファイルvimrc、gvimrcを一つのディレクトリ以下にまとめて、
設定ファイル、「.vimrc」、「.gvimrc」には、次のように環境依存の設定だけを書く「runtimepath」利用方法。何台も何台もマシンを使う人向き。
この例の場合は、runtimeディレクトリにプラグインと設定ファイルを入れている。

" $HOME/.vimrc
" 環境依存の設定と、設定ファイルの読み込みロジックを書く
:source $HOME/vimfiles/runtime/vimrc.vim
:set runtimepath+=$HOME/vimfiles/runtime
" $HOME/.gvimrc
" 環境依存の設定と、設定ファイルの読み込みロジックを書く
:source $HOME/vimfiles/runtime/gvimrc.vim
:set columns=80
:set lines=25

注意事項など

一部のvimエディタプラグインは、「$HOME/vimfiles/」、もしくは「$HOME/.vim/」に
ファイルを置くことを想定したつくりになっているので、
拡張した「runtimepath」にプラグインを置いても動作しないことがある。

ドキュメントアクション
コメント
blog comments powered by Disqus