自作Vimプラグインの置き場所と置き方
先日プラグインを作成してみた記事を公開しましたが、その記事のコメントで tyruさん からご指摘いただいた(とてもありがたいです)、プラグインのインストール場所と方法について整理しておきます。
分類
そもそも自分で書いたVim スクリプトをVimに読んでもらうためには次の3つが考えられると思います。
ここではデバッグのことを考えて自力で配置する方法「1. プラグインとして配置する」「2. パッケージとして配置する」に限定して説明していきます。なので、「3. プラグインマネージャーを使用して配置する」に関しては書きません(プラグインマネージャーのリファレンスを読んだ方がわかると思います。私は dein.vim 使っています)
前提
プラグインのリポジトリは plugin と autoload の2つのソースファイルディレクトリを持っていることを前提とします。自分が作ったプラグイン mdtable を例にすると、次のようになっています。
. ├── autoload │ └── mdtable.vim └── plugin └── mdtable.vim
プラグインとして配置
Vimには2種類のプラグイン「グローバルプラグイン」、「ファイルタイププラグイン」があります。ここではクローバルプラグインについて説明します。
Vimが起動時に読み込むプラグインディレクトリはシステムごとに異なります。以下の表は:help add-global-plugin
から見ることができます。
system | plugin directory |
---|---|
Unix | ~/.vim/plugin/ |
PC や OS/2 | $HOME/vimfiles/plugin or $VIM/vimfiles/plugin |
Amiga | s:vimfiles/plugin |
Macintosh | $VIM:vimfiles:plugin |
Mac OS X | ~/.vim/plugin/ |
RISC-OS | Choices:vimfiles.plugin |
私が作成したプラグインを配布する場合は以下のようになります。
$ cd ~/.vim $ mkdir plugin # pluginディレクトリがなければ実行する $ cd plugin $ git clone git@github.com:ushumpei/mdtable-vim.git
パッケージとして配置
Vim 8から使えるようになったパッケージ機能を使って配置します。パッケージは複数のプラグインをまとめるのにも使用できますが、ここでの例ではプラグイン1つを配置するためにパッケージを作成します。
パッケージディレクトリは~/.vim/pack
になります。この下にパッケージを置いていきます。パッケージ名のディレクトリを作成し、その下にstartというディレクトリを作ってください。その中にプラグインを入れていきます。パッケージのディレクトリ構成は以下のようになることが:help package-create
から見ることができます。
. ├── start/foobar/plugin/foo.vim " 常にロードされ、コマンドを定義する ├── start/foobar/plugin/bar.vim " 常にロードされ、コマンドを定義する ├── start/foobar/autoload/foo.vim " fooコマンドを使用した時に読み込む ├── start/foobar/doc/foo.txt " foo.vimのヘルプ ├── start/foobar/doc/tags " ヘルプタグ ├── opt/fooextra/plugin/extra.vim " オプションのプラグイン、コマンド定義 ├── opt/fooextra/autoload/extra.vim " extraコマンドを使用した時に読み込む ├── opt/fooextra/doc/extra.txt " extra.vimのヘルプ ├── opt/fooextra/doc/tags " ヘルプタグ
参考: Vimパッケージを作る | :help package-create
プラグイン作成時に plugin や autoload などのディレクトリでコードを分けて作った理由がようやく実感できました。
私が作成したプラグインを配布する場合は以下のようになります。
$ cd ~/.vim $ mkdir pack # packディレクトリがなければ実行する $ mkdir -p pack/mypackage/start $ cd pack/mypackage/start $ git clone git@github.com:ushumpei/mdtable-vim.git
まとめ
Vimはドキュメントがとても充実しているため、大変助かります。なのであまりブログに書いても、と思ったりしましたが、自分の勉強を兼ねてこれからも書きます。