如何封装用Lua/Python/Ruby编写的Vim插件代码?
2014-3-28 5:1:35
收藏:0
阅读:122
评论:1
在 Vimscript 中,脚本作用域 s: 可以用于避免插件之间的名称冲突。我正在用 Lua 编写一个 Vim 插件,发现 Vim 在一个共同的作用域中运行所有的 Lua 代码。这意味着我的插件 Lua 函数对使用 Lua 的任何其他插件都是可见的,似乎是一种等待发生名称冲突的情况。
虽然我的例子涉及 Lua,但这个问题也适用于使用 Python 或 Ruby 开发 Vim 插件。我可以在所有的 Lua 函数前面加上插件名称前缀,但是在使用这些语言时,有没有更可靠/标准的方式来封装 Vim 插件代码呢?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我对 Lua 的经验不多,但对于 Python,情况也类似,特别是如果使用“pyfile”(luafile 可能非常相似)。更好的、推荐的方法,特别是对于 Python,应该像这样:
if !exists('g:audiobox_py_loaded') python import sys, vim python if vim.eval('expand("<sfile>:p:h")') not in sys.path: \ sys.path.append(vim.eval('expand("<sfile>:p:h")')) python import audiobox endif这样,即使在 audiobox.py 文件中有顶级函数,它们也会以“audiobox”为命名空间,因此现在可以通过 audiobox 访问它们。我相信类似的习惯用法也应该适用于 Lua。
对于我的插件 AudioBox,我只是利用业余时间学习如何使用 Python 接口构建了它,我将所需功能封装到一个类中,并通过 setup() 方法公开了一个相同的对象。您可以查看代码以获取更好的理解。
注:我不是 Python 专家,所以不要评判我的代码,这更多是一个爱好项目 :)。