きっかけ

autodate.vim でファイル毎に異なる設定をしたいと思っていたら、vimの仕様を調べることになった。 下記ページほぼそのままになるが、まとめておく。

参考

runtimepath について

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

runtimepath を調べる

  • 通常は $HOME/.vim 。runtimepathは以下のviコマンドで確認できる。
:set runtimepath

runtimepathが重要

vimのファイル読込においてruntimepathが重要な役割を果たします。 VimのDocumentationにはruntimepath内の特定のファイルが順繰り読み込まれることが明記されています。 さっそくruntimepath設定を見る

:set runtimepath

:set runtimepathをVimRで実行したらこのようになっていた。

  • ~/.config/nvim
  • /etc/xdg/nvim
  • ~/.local/share/nvim/site
  • /usr/local/share/nvim/site
  • ~/.cache/dein/.cache/init.vim/.dein
  • /usr/share/nvim/site
  • /Applications/VimR.app/Contents/Frameworks/SwiftNeoVim.framework/Resources/runtime
  • /usr/share/nvim/site/after
  • /usr/local/share/nvim/site/after
  • ~/.local/share/nvim/site/after
  • ~/.config/nvim/after
  • ~/.config/nvim/dein/repos/github.com/Shougo/dein.vim
  • ~/.cache/dein/.cache/init.vim/.dein/after

たくさん読んでいる・・・。特別な事情がない限り、使うのは~/.config/nvim~/.config/nvim/afterでしょう。

rutimepath に配置されているディレクトリの役割

検索されるファイルとディレクトリは以下の通りです。

filetype.vim
ファイル名によるfiletypeの決定
scripts.vim
ファイルの内容によるfiletypeの決定
autoload/
自動的に読み込まれるスクリプト
colors/
カラースキーマの定義
compiler/
コンパイラ定義ファイル
doc/
ヘルプドキュメント
ftplugin/
ファイルタイプ別のプラグイン
ftdetect/
ファイルタイプを判別するファイル
indent/
インデントの設定
keymap/
キーマップの定義
lang/
メニューの翻訳(GVim)
menu.vim
メニューの設定(GVim)
plugin/
プラグインスクリプト
print/
印刷用
spell/
スペルチェック用
syntax/
文法
tutor/
チュートリアル

文章構造がアレだったので少し直して引用。 みんな定義リスト使おう。

dein.vim の役割

プラグインを大量導入するとこのディレクトリ、ファイル郡の中身が超絶カオスになってゆくので、 プラグイン毎にこれらファイル群を分割管理することで~/.vim~/.config/nvim以下を スッキリきれいに管理することができる。