获取Python代码块中myvim.vim文件的绝对路径
我正在尝试编写一个vim插件,其中使用了一个Python代码块。我想在python代码块中获得获取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
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