我进行了广泛的搜索,但无法解决这个问题:我正在尝试在 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 中,当我调用该函数时,它不会被处理,但是一旦脚本运行,我就可以使用该路径。
我做错了什么,如何解决这个问题?全部
最佳答案
答案就在这里,在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 后面有一个空格,因此您实际上是在实际执行之前通过字符串连接“构建”完整命令。
关于python - 设置vim脚本来执行python文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523667/