読者です 読者をやめる 読者になる 読者になる

cpoptionsのオプション値

vim

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を読み込む)
その時のオプション値は?みたいな。