Vim

vimでテンプレートを使う

vimにだいぶ慣れてきたので、カスタマイズしたくなってきた。
その過程で得た知識の理解を深めるためにまとめた。

動機

visual studioやandroid studioではプロジェクトを作るときにテンプレートを入力した状態にしてくれる。
これをvimでもやりたかった。
htmlやtexを書くとき、いつも同じ内容をはじめに入力していることに気づいたため、それを自動化したかった。

template

まず、テンプレートを用意する。
今回はhtml, texのテンプレートを用意した。
テンプレートは$VIMの下に新たにtemplateディレクトリを作ってその下に入れた。
tex templete: $VIM/template/t.tex
\documentclass{jarticle}
\usepackage{graphicx}
\title{}
\author{}
\begin{document}
\maketitle
\section{}
\section{}
\section{}
\begin{thebibliography}{99}
\bibitem{book1}
\bibitem{book2}
\end{thebibliography}
\end{document}

html template: $VIM/template/t.html
<!DOCTYPE html>
<html>
<head>
<mata charset="utf-8">
<link rel="stylesheet" href="style.css" type="text/css" charset="utf-8">
<title></title>
</head>
<body>
</body>
</html>

vimrc

次に上で作ったテンプレートをファイルを新たに作成したときのみ、挿入するように設定する。
vimrc: $VIM/vimrc
augroup templateGroup
autocmd!
autocmd BufNewFile *.html :0r $VIM/template/t.html
autocmd BufNewFile *.tex :0r $VIM/template/t.tex
augroup END

autocmdはvimrcが複数回読み込まれたときに、上書きされずに追加されていくのでautocmd!で再度読み込み時にいったんautocmdの設定を削除しています。
また、autogroupを設定することでautocmd!で再読み込み時に他のantocmdの設定が知らないうちに削除されないようにしています。pluginでautocmdを使っていた場合に影響が出ないようにするためにしたほうがよいと思っています。

BufNewFileは存在しないファイルの編集を開始したときを意味しています。ここを変えることで後ろのコマンドの実行タイミングが変わります。
例えば、QuitePreにすると:quiteを使ったときに実行されるようになるのでここでコンパイルやテストを行う外部コマンドを実行するように指定するというようなことが考えられます。
詳しくはvimのドキュメントに書かれています。

次はvimにデフォルトである補完の設定をしたいです。
目標はkaoriyaさんのスパルタンVIMです。