load, template, automatically

template の種類増やすたびに autocmd を書くのもおっくうなので vim.org をちらっと ( 20 秒程度 ) 覗いてみたけど欲しいものがなかったので plugin 書いた。

http://github.com/januswel/dotfiles/blob/ecf6a965f108f9e3dc6aa8cea794cc92bba14d6f/.vim/plugin/AutoLoadTemplate.vim

filename の指定付きで新しく buffer を開いた際もしくは buffer が空のときに filetype を設定した際に rumtimepath の最初に書いてある path 直下の "template/" directory もしくは g:autoloadtemplate_path で指定した directory 以下から適当な template を自動的に load する、というのが正確な動作説明。ちまたで見かけるのの hybrid な感じですね。

default ( g:autoloadtemplate_path の指定がない場合 ) かつ runtimepath をいじってなければ以下から読み込まれます。

それぞれの template は <filetype>.<extension> という形式の名前にしてくださいな。そうすると、

  • filename 指定ありで新しく buffer を開いた際
    • filename の拡張子と <extension> が一致したものが読み込まれます。
    • template directory に javascript.js のみがある場合に :edit foo.js すると javascript.js が自動的に読み込まれますが :tabnew bar.html しても何も読み込まれません。
  • buffer が空のときに filetype を設定した際
    • filetype と %lt;filetype%gt; が一致したものが読み込まれます。 'modified' が設定されてても ( "[+]" が status line に表示されてても ) buffer が空なら問答無用です。
    • template directory に html.html と xhtml.html のみがある場合には :set filetype=html とすると html.html が、 :set filetype=xhtml とすると xhtml.html が読み込まれます。この際に :set filetype=vim としても何も読み込まれません。