Home > Vim Hacks > Hack #112: 場所ごとに設定を用意する

Hack #112: 場所ごとに設定を用意する

Vim はファイルの種類によって独自の設定を自動的に読み込むことができます。しかしそれとは別に、ファイルの置いてある場所に応じて何かしら設定を行ないたい場合もあるでしょう。そのための方法を紹介します。

設定

以下の記述を vimrc ファイルに追記します。これは、ファイルを開いた際に、開いたファイルとその上位階層にある設定ファイルを探してそれを読み込むための設定です。 ここでは設定ファイルとして .vimrc.local と言うファイル名を使っていますが、ここは何でも構いません。ワイルドカードも使用可能です。

" Load settings for each location.
augroup vimrc-local
  autocmd!
  autocmd BufNewFile,BufReadPost * call s:vimrc_local(expand('<afile>:p:h'))
augroup END

function! s:vimrc_local(loc)
  let files = findfile('.vimrc.local', escape(a:loc, ' ') . ';', -1)
  for i in reverse(filter(files, 'filereadable(v:val)'))
    source `=i`
  endfor
endfunction

使用例

設定ファイルには、例えば以下のようなことを書いておきます。

lcd <sfile>:h

この例ではカレントディレクトリを設定ファイルがある階層に移動しています。これによってこの設定ファイルが置いてあるより下の階層のファイルのカレントディレクトリが統一できます。

他にもプロジェクト用にインデントの設定を変更したり、バッファローカルな Key mapping を定義したり、プラグインの設定用にバッファローカルな変数を定義したりと、応用範囲はかなり広いです。 また、この例の設定では複数の設定ファイルが見つかった場合ファイルシステムのルートに近いファイルから順に読み込むので、より深い階層で設定を上書きする、と言ったこともできます。

thinca
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #112: 場所ごとに設定を用意する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2009/12/hack112/trackback/
Listed below are links to weblogs that reference
Hack #112: 場所ごとに設定を用意する from Vim-users.jp

Home > Vim Hacks > Hack #112: 場所ごとに設定を用意する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top