- 898 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 19:37:54 ]
- スクリプトのローカル関数(s:func() or <SID>func())はVim内部では
<SNR>99_func()という名前(数字はスクリプト番号)のグローバル関数になってるんだけど 実は直接 :function <SNR>99_func() と書いて関数を定義できる。(:callもok) だからスクリプトのローカル関数を外部から変更できてしまう。(ただしs:var変数にはアクセスできなさそう) let sid = GetSid("plugin.vim") " redir + scriptnames で番号取得 function! <SNR>{sid}_func() ... endfunction 名前が正しいかどうかはチェックしてないみたいなので存在しないスクリプト番号が使えたり番号指定がなくても大丈夫だったりする。 そんで、おそらくs:func()とかが使える関係で関数名にコロンが使えるようになってるけど その辺の処理は適当らしくてhoge:func()とかfoo:bar:func()とかいう名前も使える。(変数名はダメらしい) どちらもundocumentedな動作。
|

|