Vim でコメントを複数行にわたって書きたい場合、自動でコメント開始文字列を挿入、インデントするための設定。
使う option は 2 つ。
- 'comments'
- 何がコメント開始文字列なのか、ブロックコメントの場合は何で終了させるのかなどを指定
- :help 'comments' 参照
- 'formatoptions'
- 自動整形について細かく指定
- :help 'formatoptions'
たとえば C 言語のコメント用設定は以下のようになる。
" insert comment strings and indent automaticallysetlocalcomments=sr:/*,mb:*,ex:*/,://" synonymous with :setlocal formatoptions=croql" don't use = operator with formatoptions" see :help 'formatoptions'setlocalformatoptions-=tsetlocalformatoptions+=rol
ポイントは 3 つ。
- setlocal を使う
- 'comments' も 'formatoptions' も buffer local なので setlocal を使う
- 'comments' の設定内容
- 大きく 2 つにわけられる。
- ブロックコメント用の
sr:/*,mb:*,ex:*/
- 開始文字列が
/*
で以降右揃え - 中間文字列が後ろに空白文字の続く
*
- 終了文字列が
*/
で、中間文字列が自動で挿入されたあとに/
を打つとコメント終了とする
- 開始文字列が
- 行コメント用の
://
- ブロックコメント用の
- 大きく 2 つにわけられる。
- 'formatoptions' の設定に
=
を使わない- 将来の追加オプションのために
=
を使わないようにとヘルプに書いてある - 'formatoptions' のデフォルトが
tcq
なので、必要なものとの差分を-=
と+=
で指定
- 将来の追加オプションのために
とりあえず上記の設定を ftplugin なんかに書いておくとコメント記述の際の省力化につながる。
JavaScript はそのまま使える。というか、 JavaScript 書こうとしてコメントまわりの設定がされてないことに気づいたので調べたという経緯。
Javadoc 用に開始文字列を sr:/**
などとしてもいいかもしれない。