Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置vim脚本以执行python文件_Python_Vim_Scripting - Fatal编程技术网

设置vim脚本以执行python文件

设置vim脚本以执行python文件,python,vim,scripting,Python,Vim,Scripting,我搜索的太多了,无法解决这个问题:我正在尝试在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() 仅当/

我搜索的太多了,无法解决这个问题:我正在尝试在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()
仅当/如果我在vim中加载myscript.vim并运行:so%时,此设置才起作用。我得到一个错误“没有这样的文件或目录my_script.py”,但从那时起脚本运行良好

我在这里收集的是,在myscript.vim中设置python脚本调用路径的s:path行在我调用函数时不会得到处理,但一旦脚本运行,我就有了可用的路径

我做错了什么,我该如何解决?答案就在这里,我很荣幸,但我一眼就没领会

其思想是使用命令pyfile和路径(包括脚本名称)构建一个字符串,然后执行它:

因此,在函数之外,调用:

let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h') . '\my_script.py

请注意,pyfile后面有一个空格,因此您实际上是在实际执行之前通过字符串连接来“构建”完整的命令

有关其工作原理的更多信息:
let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h') . '\my_script.py
execute 'pyfile ' . s:path