1

内部で Python コード ブロックを使用する vim プラグインを作成しようとしています。Python コード ブロック内のmyvim.vim( )のフル パスを取得したいと考えています。残念ながら、ファイル内で as を/home/myusername/.vim/bundle/myvim/plugin/myvim.vim使用してパスを取得することはできません。プラグイン関数が呼び出された場所のパスを出力するだけなので、どちらも使用できません。__file__.pyvim.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
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 に答える