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.vimとftplugin/以下を編集すればいいはず。