有馬総一郎のブログ

(彼氏の事情)

Vimで新規バッファのデフォルトのfiletypeを設定する

どこでこんな設定を入れてしまったのか、ある日気が付くと vimrcを再読み込みするとシンタックスが無効化される。

どうしてなんだろうなぁ、と調査してたらset filetype=markdownこんなものが記述してあった。

初回、読み込み時は普通にfiletypeが vimとして自動判定されるのに、再読み込みで強制的に markdown としてシンタックスが適用されるから、無効化したように見えたというオチだった。

昔の自分としては、vimの初回起動時の新規バッファとして、保存やset filetype=を打たなくても、filetypeを markdown として設定させたかったのだろう。

vimrc基礎文法最速マスター - 永遠に未完成を見ると、以下のとおりオプションを変数として扱えるとある。

& を接頭子にすることで、Vimスクリプト内でオプションを変数のように扱えます。

折角なので、このように修正してみた。

1
2
3
4
" デフォルトのfiletype
if len(&filetype) == 0
  set filetype=markdown
endif

これで初回起動時の新規バッファ だけmarkdown として設定される。その後の新規バッファではfiletypeは空のままというオチ。

それでは意味ないと思って、前回の続きみたいな形でバッファに入る時にfiletypeが設定されているか判定して、未設定なら設定するという形にした。

1
2
3
4
5
6
function! s:NoneFileTypeSetMarkdown()
  if len(&filetype) == 0
    set filetype=markdown
  endif
endfunction
autocmd BufEnter * call s:NoneFileTypeSetMarkdown()

Comments