我正在尝试编写一个在其中使用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
答案 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'。