我应该使用功能还是功能!在vim脚本中?

les*_*nik 2 vim

我想我明白之间的差别functionfunction!:如果用相同名称的功能已经存在function!默默地取代它,但function会产生错误.

我最终function!总是使用.因为如果我function早晚使用简单它会返回并咬我:

E122: Function my_lib#MyHandyFunction already exists, add ! to replace it
Run Code Online (Sandbox Code Playgroud)

有没有人应该使用简单的function没有!

Ing*_*kat 6

在脚本中,使用它并没有什么坏处:function!,但是您应该使用script-local(s:Foo)或autoload-scoped(myscript#Foo)函数来正确命名它们.因此,覆盖错误:function有助于提醒您重新定义全局函数,但在脚本中,您不需要这种预防措施.

当你想在开发过程中重新加载脚本时(而不是重新启动整个Vim),你必须使用它:function!.(像我的ReloadScript插件这样的插件可以处理包含警卫.)

另一个经验点:我使用的大多数插件:function!,可能是为了方便重新加载.

这同样适用于:command!:normal!,其中(通常情况下),用的版本!应该被使用.