Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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
获取Python代码块中myvim.vim文件的绝对路径_Python_Vim - Fatal编程技术网

获取Python代码块中myvim.vim文件的绝对路径

获取Python代码块中myvim.vim文件的绝对路径,python,vim,Python,Vim,我正在尝试编写一个vim插件,其中使用了一个Python代码块。我想在python代码块中获得myvim.vim(/home/myusername/.vim/bundle/myvim/plugin/myvim.vim)的完整路径。不幸的是,您无法像在.py文件中那样使用\uuuu文件\uuu获取路径。我也不能使用vim.command(':pwd'),因为这只是打印调用插件函数的位置的路径 myvim.vim function! Myvim() python << EOF impo

我正在尝试编写一个vim插件,其中使用了一个Python代码块。我想在python代码块中获得
myvim.vim
/home/myusername/.vim/bundle/myvim/plugin/myvim.vim
)的完整路径。不幸的是,您无法像在
.py
文件中那样使用
\uuuu文件\uuu
获取路径。我也不能使用
vim.command(':pwd')
,因为这只是打印调用插件函数的位置的路径

myvim.vim

function! Myvim()

python << EOF
import vim

vim_path = "full myvim.vim path here"
print vim_path

EOF

endfunction
function! Myvim()
    let s:curfile = expand("<sfile>")
    let s:curfiledir = fnamemodify(s:curfile, ":h")

python << EOF
import vim

py vim_path = vim.eval('expand("<sfile>")')
print vim_path

EOF

endfunction
函数!Myvim()
python您可以使用
获取当前正在执行的vimscript的路径,如下所示:

let s:curfile = expand("<sfile>")
let s:curfiledir = fnamemodify(s:curfile, ":h")
为了清楚起见,这里有一个完整的示例(另存为“D:\tmp\test.vim”):


python当我实现
pyvim\u path=vim.eval('expand(“”))时,我得到了一个语法错误。
。只需编写
vim\u path=vim.eval('expand(“”))
就可以输出
TypeError:强制使用Unicode:need string或buffer,NoneType find
vim\u path=vim.eval命令(:py vim\u path=vim.eval('expand(\”)”)
也会产生
TypeError
。如果在vimscript中设置变量,并使用vim.eval仅获取变量的值,会怎么样?还要再次检查一下,您不仅仅是作为命令来尝试,是吗?它实际上是作为脚本的一部分运行的吗,使用
:so%
或类似的方法?如果我只运行
:py print vim.eval('expand(“”))
我只会显示'None'。另外,我的vimrc中也有
set encoding=utf8
,这可能会有所不同?对于
:set encoding
,您看到了什么?
:set encoding
返回
encoding=utf-8
,所以这没问题。你能看看我在原始帖子中所做的编辑,以确定我是否在按照你的意思做吗?
py vim_path = vim.eval('expand("<sfile>")')
py vim_path = vim.eval('s:curfile')
python << EOF
import vim

vim_path = vim.eval('expand("<sfile>")')
print vim_path

EOF