vim の:filetype は ややこしい
:filetype関連の話題を見かけたので自分的な理解をめもめもしてみます。
おかしな所がありましたら見なかったことにしたり、あるいはご指摘いただけると助かります。
とりあえず困ったときは次のようにすると良いかなーと思っています。
" .vimrc 始めの辺りに書く " 一旦ファイルタイプ関連を無効化する filetype off filetype plugin indent off " いろいろ " .vimrc 最後の辺りに書く " ファイルタイプ関連を有効にする filetype plugin indent on
特に
filetype off
を書き忘れてしまうと、システムのvimrcやexample_vimrc経由で意図せず :filetype on
されていた場合に、ファイルタイプの検出がうまく動作しません。
on/offの書き方が少し違うのでややこしいなあと感じます。
それと、多重読み込み防止*1はありがたいのですが、そのおかげで必要なものが読み込まれないというのは悲しいなと感じています。
以下ファイルタイプ関連のコマンドとか
現状の確認
:filetype
ファイルタイプの自動検出、ファイルタイプ用の プラグインとインデント設定 を自動読み込みそれぞれの on/off を表示する。
:verbose :setlocal filetype?
現在開いているバッファのファイルタイプを表示する。
:verbose を付けなくてもファイルタイプを確認できますが、付けた場合は どこで設定されたのか も分かるので便利です。
有効にする
:filetype on
ファイルを開いたとき、ファイルタイプを自動検出するようになる。
最初に実行した時点で登録済みの検出方法が有効になる*2。
実行後に登録された検出方法は利用されない。
また、on になっている場合はもう一度 :filetype on
しても何も起こらない。
:filetype plugin on
ファイルタイプが変更されたとき、ファイルタイプ用のプラグインを自動読み込みするようになる。
:filetype indent on
ファイルタイプが変更されたとき、ファイルタイプ用のインデント設定を自動読み込みするようになる。
このとき :filetype on も適用される。
:filetype plugin indent on
:filetype plugin on
と :filetype indent on
を行った状態になる。
ファイルタイプの自動検出、ファイルタイプ用の プラグインとインデント設定 を自動読み込みするようになる。
無効にする
:filetype off
ファイルタイプの自動検出をしないようになる。
有効になっていた検出方法は無効化される。
:filetype plugin off
ファイルタイプ用のプラグインを自動読み込みしないようになる。
:filetype indent off
ファイルタイプ用のインデント設定を自動読み込みしないようになる。
:filetype plugin indent off
:filetype plugin off
と :filetype indent off
を行った状態になる。
ファイルタイプ用の プラグインとインデント設定 を自動読み込みしないようになる。
ファイルタイプの自動検出についての設定は変化しない。
そのほか
:filetype detect
現在開いているバッファのファイルタイプを自動検出する。
:setlocal filetype=SET_FILE_TYPE
現在開いているバッファのファイルタイプをSET_FILE_TYPEに設定する。
:setfiletype SET_FILE_TYPE
現在開いているバッファのファイルタイプをSET_FILE_TYPEに設定する。
このコマンドの内部では:setlocal filetype=SET_FILE_TYPE
+色々をしている。
補完も利用できるので、こちらを使った方が良いのかもしれない。