Vim script で変数を不変で定義するコマンド

前回の続き。
id:tyru さんに色々とコメントを頂いてこんな感じになりました。

[ソース]

command! -nargs=1 Val let <args> | :execute 'lockvar '.matchstr(<f-args>, '\zs.*\ze=')

Val value = 10
echo value

" 代入できないよ
let value = 10

" 再代入する場合は unlet か unlockvar
unlet value
" unlockvar value

Val value = 42
echo value


おお、だいぶ使い勝手がよくなった気がする!
command 便利。
ただ、上記の場合で一度定義した変数は再度定義する事が出来ないので、何回も読み込むような Vim script ファイルで使う場合はエラーが出るのでどうするか。
うーん、再変を許す :Reval とか定義したら不変の意味がなくなるからなぁ…。
うむむ…。


しかし、command はあまり活用していないので、こういうのは全然思いつかなかった。
色々と悪さが出きそうですね!