2012/06/18

Recent entries from same category

  1. VimConf 2019 を終えて
  2. clangd を使う時に便利なコマンド compiledb
  3. VimConf 2018 に行ってきた。
  4. Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。
  5. Vim の :terminal の中から外の Vim を操る方法

タイトルは気にしないで下さい。
call vundle#rc()
call neobundle#rc()
call pathogen#runtime_append_all_bundles()
filetype plugin indent on
よりも後でやってはいけない。上記の様な関数は何をしているかというと、本来読み込まないパスにある vim plugin ディレクトリをランタイムパスに追加します。これらプラグイン管理系の仕事は主にランタイムパスへの追加です。vim は vimrc を読み込んだ後に(GUIであればこのあとgvimrc)、runtimepath (省略名 rtp) に列挙されるディレクトリをランタイムパスとして認識していきます。この一括読み込みはこのタイミングしかありません。つまり上記の命令よりも前に
filetype plugin indent on
を実行してしまうと、その時点でプラグイン郡が先行で読み込まれてしまい、その後で幾らランタイムパスを変更しても有効にはならないのです。手動で設定したら行けるのに...という方は上記の読み込みを無理やりやっている事になります。最近は autoload により、上記読み込みタイミングを逃しても読み込んでくれる仕組みがあるおかげでデバッグしづらいかもしれませんが、このポイントを覚えておけば今年の夏もビキニでバッチリです。

追記
もう少し説明。filetype plugin indent on やったからといってプラグインが読み込まれるとは限らない。ftdetect/*.vim は filetype.vim が実行されるタイミングなので、後から有効にしても遅いよという事なのです。ちなみにこれを回避するおまじないとして vundle の doc には vimrc で一度 filetype off しろという tips が書いてあるらしい。
Posted at by | Edit


blog comments powered by Disqus