C言語やC++を使うときはタブ(半角4文字分)でインデントするので、vimの標準設定(.vimrc にて設定)はそれに合わせている。
が、言語によっては別の設定にしたくて、例えばRubyの場合は半角スペース2文字でインデントしたい。
" Vim filetype plugin file plus " Language: Ruby " Maintainer: eel3 @ TRASH BOX " Last Change: Mar 16 2011 " Only do this when plug-in already loaded for this buffer if !exists("b:did_ftplugin") finish endif setlocal expandtab setlocal tabstop=2 shiftwidth=2 softtabstop=2 map <buffer> <Leader>r <Esc>:!start ckw -e irb.bat -r %<CR> " Undo the stuff we changed let b:undo_ftplugin = (exists('b:undo_ftplugin') ? b:undo_ftplugin . ' | ' : '') \ . "setlocal et< ts< sw< sts< | unmap <buffer> <Leader>r"
Windows上では香り屋版vimを使っていて、このファイルをvimのインストールディレクトリ直下の vimfiles\after\ftplugin に置くとRubyのコードを編集する時だけインデントの設定が切り替わるようになった。
で、このファイルをUbuntu 10.04 LTS上のgvimでも使おうとしたのだが、何かうまくいかない。文字コード/改行コードを変換して ~/.vim/after/ftplugin 直下に置いたのだが、インデントの設定が切り替わらない。
実はこれ以外にもlisp.vimとかlua.vimとか作成して同ディレクトリに置いているのだが、軒並み動作していないようだ。いずれもWindows上では動作実績があるのだが。
文字コード・改行コードは変換しているし、ファイルやディレクトリのアクセス権限も問題なさそう*1なのだが……。
もしかしたら ~/.vim/after/ftplugin/ruby.vim を読み込んだ後で ~/.vimrc を読み込んでいるのだろうか? Windowsの香り屋版ではインストールフォルダ直下に _vimrc を置いているので、読み込みの順番が違うとか……。いや、それだとアプリケーション全体の挙動として変なのか。
後は、違いといえば香り屋版がvim 7.3でUbuntu上のgvimが7.2だという点ぐらいだが……。
ググってみるとこれみたいにUbuntu 10.04にgvimを入れていて ~/.vim/after/ftplugin 直下にファイルを置いていて悩んでいる人もいるみたいだが、状況が色々と異なるので全く関係ない事象かもしれないし……。う〜ん。
*1:いわゆる「chmod 755」で設定される権限。