以下参考使用python开发vim插件及心得分享
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},你可以用:python3 print(“Hello World!”)来验证一下。
只能执行一条语句,没什么用,不是吗?所以有更加强大的接口,语法如下:
py[thon]3 << {endmarker} {script} {endmarker}
这样我们就可以执行python脚本{script}中的内容了。{endmarker}是一个标记符号,可以是任何内容,不过{endmarker}后面不能有任何的空白字符。看一个简单的例子,假设下面代码保存为script_demo.vim:
function! Foo() python3 << 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]后面的所有参数被看做是一个文件的名字。
定义 function时加了一个’!'号
function! Foo()
这’!'是表示在多次source的过程中强制覆盖之前重复的function
sys.path.append(’/home/xxxx/yyyy/’) /home/xxxx/yyyy为lib所在目录