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

时间:2013-02-21 15:54:13

标签: python vim

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

myvim.vim

function! Myvim()

python << EOF
import vim

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

EOF

endfunction

修改

@actionshrimp,我正在尝试这个:

myvim.vim

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

1 个答案:

答案 0 :(得分:3)

您可以使用<sfile>获取当前正在执行的vimscript的路径,如下所示:

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

要将其传递给python,您应该可以使用:

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

或者如果你设置了变量:

py vim_path = vim.eval('s:curfile')

为清楚起见,这是一个完整的例子(保存为'D:\ tmp \ test.vim'):

python << EOF
import vim

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

EOF

当我打开它并输入:so %时,它会在底部显示'D:\ tmp \ test.vim'。