function s:setupWrapping() set wrap set wrapmargin=2 set textwidth=72 endfunction
现在,根据vim手册的Defining a function部分,“函数名称必须以大写字母开头”.根据手册的Local mappings and functions部分,’在脚本中定义函数时,“s:”可以添加到名称前面,使其成为脚本的本地.但是,在将其范围指定为脚本的本地范围时,没有提及能够以小写字母开头的函数名称.
那么,函数是否在语法上是不正确的,但无论如何都是有效的,或者它在语法上是否正确但是我找不到那样说的文档?
ZyX在评论中纠正了我,并指出,与此答案的早期修订相矛盾,vim不允许声明缓冲区范围函数.您可以声明一个名为b:function_name的全局函数,或者__ function_name,但由于注释中提到的原因,这很容易让人感到困惑.
在字典中声明的函数不需要大写.
缓冲区Funcref,以及可能在全局或函数级范围之外的其他Funcref(“本地”Funcrefs)不需要大写.但是无论如何它们的用处都是有限的,因为Funcref必须引用全局或脚本范围函数(后者在语法上是笨拙的)或字典函数;在后一种情况下,你必须通过调用(funcref,args,dict)来调用它.
但无论如何,你正在寻找文档,所以我做了一个:helpgrep资本并发现了这些智慧:
E704:Funcref变量必须以大写字母“s:”,“w:”,“t:”或“b:”开头.
E124:«通过名称{name}定义一个新函数.名称必须由字母数字字符和’_’组成,并且必须以大写或“s:”开头(见上文). »“见上文”指针指的是user-functions和local-function部分,它们提供了更多细节,但未提及有关脚本范围函数的非大写的任何内容. user-functions提到函数名必须以大写字母开头,以避免与内置函数混淆.
在其他作用域出现之前,总是用大写启动函数名的严格规则可能是真的,其中脚本作用域似乎是第一个,或者至少第一个能够包含函数声明.我猜测断言这个规则的手册部分尚未更新以反映现代vim的状态.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。