設定時にリテラル値の代わりに関数呼び出しなどの式を使用できる2つの方法のうちstatusline、どちらも静的関数を許可していないようです。
set statusline=%{s:MyFunc()}set statusline=%!s:MyFunc()
どちらも次のエラー ペアを生成します。
E120: Using <SID> not in a script context: <SID>:MyFuncE15: Invalid expression: <SID>:MyFunc()
設定しようとしてs:MyFunc()いるのと同じファイルで定義しましたstatusline。
関数をグローバルにすると(ファイル内のすべての場所にs:MyFunc置き換えられMyFuncます)、エラーはなく、statusline適切に設定されます。したがって、この質問。
に置き換えs:て<SID>:も役に立たなかったことに注意してください。