読者です 読者をやめる 読者になる 読者になる

パンダのメモ帳

技術系のネタをゆるゆると

/etc/httpd/conf.d 以下の設定ファイルで syntax highlight

/etc/httpd/conf.d 以下の設定ファイルを vim で編集する際に syntax highlight を有効にする方法についてメモ。

追記(2010-01-08):以下の方法はお行儀が悪い(=やっちゃいけない)事が判明した。お行儀のよい作法については以下の記事を参照。

1. 経緯

CentOS 5.4 の Apache 2.x では /etc/httpd/conf/httpd.conf の他に /etc/httpd/conf.d 以下のファイルが自動で読み込まれる。これら設定ファイルを編集する機会は多いが、vim で開いても syntax highlight が有効にならない。気にしなければいいし、開く度に

:set syntax=apache

とすれば syntax highlight される……が、気になるし毎回コマンドを入力するのもアホらしい。どうすれば自動で判別してくれるのか。

2. 調査結果

当初、なんらかの方法でファイルを解析して判別していると思っていたのだが、何のことはない、ファイルの拡張子やパスで判別しているに過ぎなかった。その定義が /usr/share/vim/vim70/filetype.vim にある事がわかったので早速覗いてみると、以下のような行を見つけた。

" Apache config file
au BufNewFile,BufRead .htaccess                  setf apache
au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,auth_mysql.conf*,auth_pgsql.conf*,ssl.conf*,perl.conf*,php.conf*,python.conf*,squirrelmail.conf* call s:StarSetf('apache')

ここで Apache に関するファイルの定義を行っているわけだが、注目したのは

/etc/apache2/*.conf*

の部分。Debian などの場合これでいいっぽいが、CentOSの場合は /etc/httpd 以下に設定ファイル群がインストールされる。この差が syntax highlight されない原因だと断定。

3. 対応

/usr/share/vim/vim70/filetype.vim の該当部分を以下のように書き換えた。

" Apache config file
au BufNewFile,BufRead .htaccess                  setf apache
au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/httpd/*.conf*,auth_mysql.conf*,auth_pgsql.conf*,ssl.conf*,perl.conf*,php.conf*,python.conf*,squirrelmail.conf* call s:StarSetf('apache')

書き換えたら保存して、改めて /etc/httpd/conf.d 以下のファイルを開いてみると、バッチリ色づけされている。これで気持ちよく Apache の設定ファイルを編集することができそうだ。