Vim のブログ

テキストエディター Vim の魅力、使い方のコツを初心者にも分かりやすく伝えていきたいと思います。

Vim のカスタマイズ 〜autocmd で自動処理〜

Vim の自動処理とイベント

.vimrc が読み込まれて中に記述されたコマンドが実行されるのは、Vim の起動時の一度だけです。

しかし、ここに autocmd というコマンドを書き加えることにより、特定のタイミングに対して自動で処理を追加することが出来ます。この自動処理を行える特定のタイミングを「イベント」と呼びます。ヘルプの

:h autocmd-events

から、ファイルが開かれた時、閉じられた時など、種々様々なイベントに対して自動処理を行うことが出来ることが確認できます。

autocmd

autocmd は

autocmd グループ名(オプション) イベント名 ファイルパターン nested(オプション) イベントに対して自動的に実行されるコマンド

という形の引数指定で呼び出すことが出来ます。グループ名と nested は必須ではありません。nested は、自動処理中に再帰的に autocmd を実行したい場合に指定します。基本的には不要ですが、詳しくは ヘルプを参照して下さい。グループ名については後で説明します。

ファイルパターン

どのようなファイルに対して自動処理を行いたいのかをファイルパターンを通じて指定することが出来ます。例えば、ファイルパターンとして*.htmlを指定すると、HTMLファイルのみに対して自動処理が行われます。

グループ

autocmd にグループを指定しておくと、そのグループの autocmd をまとめて解除することが出来ます。これは、同じ autocmd が何度も繰り返し登録されるのを避けるのに使われます。

また、グループは、augroup コマンドにより、一括指定することも出来ます。

" vimrc_autocmd グループの autocmd 登録を開始する
augroup vimrc_autocmd
  " 複数回、この部分が実行された場合に備えて、vimrc_autocmd グループの autocmd を一括解除する
  augroup!
  " 自動的に vimrc_autocmd に登録される
  autocmd ...
augroup END
" augroup の外でも、オプションを使って明示的にグループを指定することも可能。
autocmd vimrc_autocmd ...

このグループ指定と、それを用いた事前一括解除を怠ると、.vimrc が複数回読み込まれた時に自動処理が何重にも登録されることになり、Vim が重くなったり、異常な動作をする原因になるので注意しましょう。

この autocmd の具体的な使い方の例を別のページで紹介しています。