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/等