Python,VIM:a<&书信电报;在这里
如果我有两个功能:Python,VIM:a<&书信电报;在这里,python,vim,Python,Vim,如果我有两个功能: function! foo() python3 << HERE import mylib pass HERE function! bar() python3 << HERE import mylib pass HERE 那么,python解释器是嵌入在vim中的吗?此外,还提供了python的单独扩展(vim API的包装函数) mylib编译成字节码并加载了多少次?每个vimscript函数都有自己的mylib吗?我可以实例化一些东西并期
function! foo()
python3 << HERE
import mylib
pass
HERE
function! bar()
python3 << HERE
import mylib
pass
HERE
那么,python解释器是嵌入在vim中的吗?此外,还提供了python的单独扩展(vim API的包装函数)
mylib编译成字节码并加载了多少次?每个vimscript函数都有自己的mylib吗?我可以实例化一些东西并期望它在另一个函数中可见吗?我有一组leader函数,它们共享相似的代码,并在同一个缓冲区上运行,因此我想知道是否可以重用该数据结构。
解释器加载到内存中的次数:显然在vim运行时加载一次
sys.modules
中缓存导入的模块,因此每个Vim实例加载一次mylib*.pyc
文件中,因此mylib在每次更新时都会编译一次(假设Python能够检测到此更新;通常情况下它不会有问题)在任何情况下,都不要使用
python,我相信解释器只加载一次,而且所有python块都使用同一个解释器,不管它们被调用在哪里?如果我想发布我的Vim插件,是否可以将其放在~/.Vim
下,以便它像往常一样包含在Vimball中?@IngoKarkat&runtimepath
中的任意位置。不过,您需要相对较新版本的Vim(AFAIR 7.4之后有一些修复),否则您将不得不修改sys.path
或创建相同的导入挂钩(出于测试目的,我有一个仅用于挂钩的Python版本的代码,但不确定我是否实际将其发布到任何地方)。更多详情请访问:h pythonx目录
。但我不记得这是不是最近的一次。
1. Python interpreter main program
3. Implementation of the Vim module for Python
python << EOF
from y import foo, bar
def my_function1():
foo()
def my_function2(i):
bar(i)
for i in range(2):
my_function1()
my_function2(i)
EOF
# pythonx/mymodule.py
from y import foo, bar
def my_function1():
foo()
def my_function2(i):
bar(i)
def start():
for i in range(2):
my_function1()
my_function2(i)
" plugin/myscript.vim
python import mymodule; mymodule.start()