cpoptionsのオプション値
helpを見た。
compatible-optionsの略。
デフォルトのオプション値は「"aABceFs"」で、文字列を使ってフラグをあらわす。
オプション値は山盛りあるなぁ。
バッファ固有のオプションからの参照で辿ってきたので、sとSフラグに注目してみる。
*cpo-s* s バッファが初めてアクティブになる時点でバッファのオプショ ンが設定される。これは Vim version 3.0 と同じ動作であ る。そして既定ではこの動作を行う。これが含まれないと、 オプションはバッファが作られた時点で設定される。 *cpo-S* S バッファのオプションを常にバッファに移動する時点で設定 する ('readonly', 'fileformat', 'filetype' と 'syntax' 以外)。これは (ほとんど) Vi互換の設定である。 オプションの値は元のカレントバッファでの値になる。ユー ザがオプションを変更し、その後で別のバッファに移ると、 その値はコピーされる。事実上、バッファオプションを全て のバッファに対しグローバルにしている。 's' 'S' バッファのオプションをコピーするタイミング ~ オフ オフ バッファが作られた時点 オン オフ バッファが初めてアクティブになった時点 (既定) なし オン バッファに移動するたび (Vi互換)
なるほど。
vimのcpoptionデフォルトのsでは「バッファが初めてアクティブになった時点」という動作になるのか。
ウィンドウだけでなく、バッファも「グローバルな値」の影響を受けるみたい。
これは奥が深い。深い。深い。
理解できたのか?自信がない。
うーん。まとめてみよう。
- option値にはデフォルト値が存在する
- option値には下記3つのスコープが存在する
- グローバル
- ウインドウ
- バッファ
- 新規ウインドウやバッファには新しいオプションが設定される
- cpoptionによって設定されるタイミングは異なる
- 値の引き継ぎは1.グローバル 2.ローカルの順で優先される
- ウインドウ・バッファローカルの値は明示的にlocalを設定しないとグローバルな値も書き換えてしまう
- :set number => ローカルとグローバル書き換え
- :setlocal number => ローカルのみ書き換え
クイズがしてみたい。
XXで起動して、XXと**を行った。(前提としてXX行記述のvimrcを読み込む)
その時のオプション値は?みたいな。