在设置时可以使用表达式(例如函数调用)代替文字值的两种方式中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>:没有帮助。