我對lua沒有太多經驗,但對於python來說,事情也很相似,特別是如果使用'pyfile'(luafile可能非常相似)。好了,推薦的方法,特別是對於蟒蛇會是這個樣子:
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專家,所以不要評判我的代碼,這是一個愛好項目:)。
我不知道任何有關振動,但如果你的插件是單獨的lua塊,那麼你可以使用本地函數/變量或使用單獨的環境。 – moteus
至少,這是比插入名稱前綴更好的解決方案。 –