2015-07-20 37 views
2

我搜索了廣泛,我無法解決這個問題:我試圖編寫一個病原體友好的Python插件在Windows中。該設置是:安裝vim腳本來執行python文件

在\ vimfiles \包\插件我有一個myscript.vim:

let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h') 

function! Up() 
    pyfile my_script.py 
endfunction 

command Up :call Up() 

然後在同一目錄下我有my_script.py:

import vim 
vim.current.buffer.append("here I am") 

這安裝程序只適用於/如果我在Vim中加載myscript.vim並運行:so%。我收到一個錯誤'沒有這樣的文件或目錄my_script.py',但從此腳本運行良好。

我在這裏收集的是s:路徑行,它爲python腳本調用設置路徑,在myscript.vim中不會在我調用該函數時得到處理,但是一旦腳本運行,我就可以使用該路徑。

我在做什麼錯了,我該如何解決這個問題? Ty全部

回答

2

答案在這裏,在when using "pyfile s:pyscript" it seems vim doesn't interpret "s:pyscript" as a variable(榮譽https://stackoverflow.com/users/200291/icktoofay),但我沒有抓住它乍一看。

的想法是建立一個字符串兩個命令pyfile和路徑(包括腳本名稱),然後執行它:

所以,在函數外,撥打:

let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h') . '\my_script.py 

然後在函數內部:

execute 'pyfile ' . s:path 

通知有pyfile後面輸入一個空格,所以你其實是實際執行它之前字符串連接「建設」的完整命令。

+0

有關這是如何工作的更多信息:https://stackoverflow.com/questions/4976776/how-to-get-path-to-the-current-vimscript-being-executed – gmarmstrong