前言
vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力。然而,vim自身用于写插件的语言vimL功能有很大的局限性,实现功能复杂的插件往往力不从心,而且运行效率也不高。幸好,vim早就想到了这一点,她提供了很多外部语言接口,比如Python,ruby,lua,Perl等,可以很方便的编写vim插件。本文主要介绍如何使用Python编写vim插件。
准备工作
1. 编译vim,使vim支持Python
在编译之前,configure
的时候加上--enable-pythoninterp
和--enable-python3interp
选项,使之分别支持Python2和Python3
编译好之后,可以通过vim --version | grep +python
来查看是否已经支持Python,结果中应该包含+python
和 +python3
,当然也可以编译成只支持Python2或Python3。
现在好多平台都有直接编译好的版本,已经包含Python支持,直接下载就可以了:
- Windows:可以在这里下载。
- Mac OS:可以直接
brew install vim
来安装。 - Linux:也有快捷的安装方式,就不赘言了。
2. 如何让Python能正常工作
虽然vim已经支持Python,但是可能:echo has("python")
或:echo has("python3")
的结果仍是0
,说明Python还不能正常工作。
此时需要检查:
- 系统上是否装了Python?
- Python是32位还是64位跟vim是否匹配?
- Python的版本跟编译时的版本是否一致(编译时的版本可以使用
:version
查看) - 通过
pythondll
和pythonthreedll
来分别指定Python2和Python3所使用的动态库。
例如,可以在vimrc里添加
set pythondll=/Users/yggdroot/.python2.7.6/lib/libpython2.7.so
经此4步,99%能让Python工作起来,剩下的1%就看人品了。
补充一点:
对于neovim,执行
pip2 install --user --upgrade neovim
pip3 install --user --upgrade neovim
就可以添加Python2和Python3的支持,具体参见:h provider-python
。
从hello world开始
在命令行窗口执行:pyx print("hello world!")
,输出“hello world!”,说明Python工作正常,此时我们已经可以使用Python来作为vim的EX
命令了。
操作vim像vimL一样容易
怎么用Python来访问vim的信息以及操作vim呢?很简单,vim的Python接口提供了一个叫vim的模块(module)。vim