我广泛搜索SO并且我无法解决这个问题:我正在尝试在Windows中编写一个病原体友好的python插件。设置将是:
在\ vimfiles \ bundle \ plugin中我有一个myscript.vim:
let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h')
function! Up()
pyfile my_script.py
endfunction
command Up :call Up()
然后在同一目录中我有my_script.py:
import vim
vim.current.buffer.append("here I am")
此设置仅在/如果我在Vim中加载myscript.vim并运行:so%时才有效。我收到错误'没有这样的文件或目录my_script.py',但从那时起脚本运行正常。
我在这里收集的是s:path行,它设置了python脚本调用的路径,在myscript.vim中,当我调用该函数时没有得到处理,但是一旦脚本运行,我就可以使用该路径了。
我做错了什么,我该如何解决这个问题? Ty all
答案 0 :(得分:2)
答案就在这里,when using "pyfile s:pyscript" it seems vim doesn't interpret "s:pyscript" as a variable(对https://stackoverflow.com/users/200291/icktoofay赞不绝口)但我乍看之下并没有抓住它。
我们的想法是使用命令pyfile和路径(包括脚本名称)构建一个字符串,然后执行它:
因此,在函数外部,调用:
let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h') . '\my_script.py
然后在函数内部:
execute 'pyfile ' . s:path
注意pyfile之后有一个空格,所以你实际上正在构建&#39;实际执行之前字符串连接的完整命令。