2
是否可以在Vimscript中使用委托或将函数作为参数传递?
我正在尝试创建一个小的插件来学习vimscript,我的目标是创建一些函数来处理选定的文本并将其替换为结果。该脚本包含以下各项: 两个处理文本的函数:它们将字符串作为参数,然后返回该字符串,该字符串应用于替换原始文本。目前,我只有两个人,但不久之后可能还会更多。 获取所选文本的函数:只需拉动最后的选择并返回它。 包装函数:调用处理函数,获取其结果并将该结果替换为旧选择。 现在,我的包装器函数如下所示: function! Wrapper() " Get the string to insert let @x = Type1ProcessString(GetSelectedText()) " remove the old selection normal gvd " insert the new string normal "xp endfunction 我必须创建第二个包装器,将第3行替换为 let @x = Type2ProcessString(GetSelectedText()) 我想给包装器函数一个参数,该参数包含要执行并在第3行中使用通用调用的Process函数。现在,我尝试使用call不同的方法,例如: let @x = call('a:functionToExecute', GetSelectedText()) 但是我并没有真正取得成功,:h call也没有对委托主题真正有所帮助。 总结一下,这是我的问题: 我如何只为所有处理函数提供一个包装函数? 在vimscript中有什么可以充当代理的吗? 如果不存在代表,那么做我想要的事情的“好”方法是什么?