vundleを使うとfiletypeがおかしい時の対処法
さらに追記
いつのまにかこの方法をしなくても問題なくfiletypeが選ばれていました
原因と根本的な解決方法は不明です
追記
翌々考えると追記前の奴は起動時しかfiletypeが設定されないので訂正します
autocmd BufWinEnter * filetype detect
こう書いたほうがいいと思う
以下は追記前の内容
結論:
~/.vimrcに
autocmd VimEnter * filetype detect
を書くだけ
以下どうでもいい話:
もちろん
~/.vimrcに
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() "Bundleがいくつか書いてある filetype plugin indent on
この様に書いてますがfiletypeがおかしいです
いくら調べても同じ問題に直面してる人がいるように思えないので
こちらの特殊なケースにだけ発生するように思えますが
まあそんなのは今はどうでもいいです
filetype off
これを消すとfiletypeはきちんと選ばれているのですが
vundleのREADMEに書いてあるものを消す勇気なんてないので別の解法を調べてみた
:help filetype@ja
日本語のhelpを眺めているとなんだかちょうどいいのを見つけた
直接見たい人は
:help filetype-detect
これが早いです
一部引用します
再びファイル検出を有効化するには: > :filetype detect 空のファイルから編集を始めて、ファイル形式を判定するのに充分なテキストをタイプ してからコレを使用する。 (以下略)
とりあえず空のファイルじゃないけど
:set filetype filetype=conf
となる以下のcファイルでfiletype detectを打ってみる
#include<windows.h> int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ MessageBox(NULL,"hello world","hello world",MB_OK); return (0); }
貼った意味ないと思うけど…
:filetype detect :set filetype filetype=c
きちんとシンタックスもc言語のになっているしfiletypeも問題ない
後はこれを起動時に読み込ませるだけだ
勝手にコマンドを実行するのに
autocmd
これを使うのは知っていたので
:help autocmd@ja
もちろん日本語のhelpを見る
するとVimEnterなんてのを見つけた
詳しい説明を見たい人は
:help VimEnter
で見れます
ちなみにこれはvimが使えるようになった時に実行されるようになるらしい
後はこれらを組み合わせて結論で書いた
autocmd VimEnter * filetype detect
これを~/.vimrcに書いて終わり
ちなみに真ん中にあるアスタリスクは全てのファイルでっていう意味だ
自信ないけどね…
つまり日本語に直すと
vimが使えるようになったら自動でファイルタイプの再設定を行うって意味だ