设置vim脚本来执行python文件

时间:2015-07-20 18:23:17

标签: python vim scripting

我广泛搜索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

1 个答案:

答案 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;实际执行之前字符串连接的完整命令。