cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

setglobalの話

thinca
たしかに、それを考慮すると、setglobal 使った方がいいですね
:help :setglobal

バッファ/ウィンドウについてローカルなオプションに対して:
    コマンド     グローバルな値    ローカルな値 ~
:set オプション=値 設定される        設定される
:setlocal オプション=値 なし        設定される
:setglobal オプション=値 設定される        なし
:set オプション?     なし        表示される
:setlocal オプション?     なし        表示される
:setglobal オプション?     表示される        なし

http://lingr.com/room/vim/archives/2014/11/29#message-20730758

s_of_p
これだけ読むと fileencoding のグローバル値がないように見えますね。

rbtnn
さっきの話だとグローバルなfileencodingとローカルなfileencodingがあるって話じゃなかったでしたっけ?

thinca
いや、全てのオプションにグローバルな値はある

http://lingr.com/room/vim/archives/2014/11/29#message-20730854

thinca
バッファについてローカル

グローバルまたはバッファについてローカル
があり(バッファではなくウィンドウについてローカルもある)、両者で意味が違う
まず、どちらもグローバルな値はある

> バッファについてローカル
こちらの場合は、新しいバッファが開かれた時点で、グローバルの値がこのバッファの値としてコピーされる
コピーされるので、その後でグローバルな値がいくら変更されても、すでにあるバッファの値に影響はない

> グローバルまたはバッファについてローカル
こちらの場合は、特にコピーされず、バッファローカルな値が存在しない場合はグローバルな値が使われる

setlocal でバッファローカルな値を設定した場合は、そちらが使われる。 setlocal hoge< などで、バッファローカルな値を消すこともできる。そうすると再びグローバルな値が参照される
ローカルな値がない場合はグローバルな値が参照されるので、グローバルな値を変更したらそれに追従する
statusline などがいい例 > グローバルまたはバッファについてローカル
statusline はウィンドウについてローカルだけど

rbtnn
hm
全てのオプションはグローバルな値を持っていて、「バッファについてローカル」と「グローバルまたはバッファについてローカル」の違いは最初にコピーされるかされないか。

http://lingr.com/room/vim/archives/2014/11/29#message-20730865