viでファイルタイプごとに設定を切り替える  

2010-01-21

viで拡張子ごとに設定を切り替えたいことがあります。何となくPythonを使おうと思ったときに、タブとスペースが混在するとインデントがややこしくなる・・・ってのが今回の動機です(過去のプログラマーなのでこのスタイル嫌い・・・)。

ファイルタイププラグインの有効化  

Vineのvim-6.4ではファイルタイププラグインが有効になってますが、ファイルタイププラグインが有効になってない場合は以下のディレクティブを設定ファイルに追加します。

file type plugin on

Vineでは/etc/vim/vimrc.jaにおいて、

file type plugin indent on

になってました。

ファイルタイプの登録  

ホームディレクトリにファイルタイプ定義用のファイルを作成します。UNIX系では~/.vim/filetype.vimだそうです。存在しない場合は作成します。ここでは拡張子.pyに対して登録することにします。

/.vim/filetype.vim

augroup filetypedetect
  au BufRead,BufNewFile *.py setfiletype python
augroup END

続いて、Pythonのファイル固有の設定を記述します。viの難しい設定はよくわからないので、「タブを挿入したときはスペースに変換。タブ幅は4」という設定を追加します。設定ファイルは~/.vim/ftplugin/ファイルタイプ.vimです。

/.vim/ftplugin/python.vim

set expandtab  <-- タブをスペースに変換
set tabstop=4  <-- タブ幅を4とする

これで.pyファイルを開いたり作成したときに設定が適用されていればOK。とりあえずはタブとスペースの混在で泣かされることは減ると思います。
なお、システムの設定自体をいじる場合はVineでは/usr/share/vim/vim64/以下のfiletype.vimftplugin/以下を編集すればいいはず。

参考サイト