1.vimscript調用python的函數
vim有各種強大的插件,這不僅歸功於其提供的用來編寫插件的腳本語言vimL,還得益於它良好的接口實現,從而支持python等語言編寫插件。
當vim編譯時帶有+python
特性時就能使用python2.x編寫插件,+python3
則支持python3.x,可以使用
vim --version
來查看vim的編譯特性。用vim --version | grep +python
查看輸出,否則你可能要重新編譯安裝vim。
要使用python接口,可以用:h python
來查看vim提供的幫助文檔,本文做一個簡單的介紹。我們都知道在vim裏可以執行bash命令,只需要:!command
即可,那麼vim裏可以執行python語句嗎?當然可以了,vim那麼強大!不是嗎,是嗎?!
vim中執行python命令
在vim中可以使用py[thon] {stmt}
來執行python語句{stmt},你可以用:python print "Hello World!"
來驗證一下。
只能執行一條語句,沒什麼用,不是嗎?所以有更加強大的接口,語法如下:
py[thon] << {endmarker}
{script}
{endmarker}
這樣我們就可以執行python腳本{script}中的內容了。{endmarker}是一個標記符號,可以是任何內容,不過{endmarker}後面不能有任何的空白字符。看一個簡單的例子,假設下面代碼保存爲script_demo.vim:
function! Foo()
python << EOF
class Foo_demo:
def __init__(self):
print 'Foo_demo init'
Foo_demo()
EOF
endfunction
那麼在vim中我們先用:source path_to_script/script_demo.vim
來加載腳本,然後就可以用:call Foo()
來運行python腳本了,整個過程如圖所示:
此外,我們還可以將python腳本放到一個單獨的.py文件中,然後用pyf[ile] {file}
來運行python文件中的程序,要注意這裏pyf[ile]後面的所有參數被看做是一個文件的名字。
1.1 !的作用
定義 function時加了一個'!'號
function! Foo()
這'!'是表示在多次source的過程中強制覆蓋之前重複的function
2.設置和查看python默認庫。
2.1 export PYTHONPATH=$PYTHONPATH:/app/esb/sbin/lib
2.2 或者在python腳本中加入以下語句
sys.path.append('/home/xxxx/yyyy/')
/home/xxxx/yyyy爲lib所在目錄
2.3 看一下python的默認庫路徑
$ python
>>> import sys
>>> sys.path # 此時會顯示python的庫路徑,一般有很多個,在ubuntu下一般包括/usr/local/lib/python2.7/dist-packages/等