1

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

我的vim

function! Myvim()

python << EOF
import vim

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

EOF

endfunction

编辑

@actionshrimp,我正在尝试这个:

我的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
4

1 回答 1

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”。

于 2013-02-21T16:02:55.373 回答