您的位置:首页 > 编程语言 > Python开发

在Vim中使用python让Opencv函数自动补全

2013-07-27 22:44 976 查看

用Vim编写python

怎么将Vim配置成IDE,网上已有很多相关发方法,此处给出两个链接供大家参考
1、http://unlogic.co.uk/posts/vim-python-ide.html
2、http://www.cnblogs.com/renrenqq/archive/2010/09/09/1813669.html

Vim中自动补全Python

1、jedi-vim
stackoverflow.com的提问中,看到了jedi-vim的Vim插件(https://github.com/davidhalter/jedi-vim),看介绍感觉功能比较强大,由于介绍的安装方式为在linux环境下的,我按照其他插件的安装方式来安装它,测试了一天,总是提示有问题,最后不了了之。提示:先安装依赖jedi,在安装jedi-vim。如果使用pip安装,则需先安装setuptools,再安装pip。

2、pydiction
pydiction只用一个键来补全(Tab)。具体安装方式和文档见http://www.vim.org/scripts/script.php?script_id=850
pydiction依赖于complete-dict来完成自动补全,自带的complete-dict已将几乎所有的python模块包含,所以即使你的文件中没有import该模块,其也可自动对相应的关键字进行补全。且其对于函数的补全不会显示函数参数。

3、omni completion
vim中自带的补全插件。其详细中文介绍: http://blah.blogsome.com/2006/06/27/vim7_tut_oc/以及http://vim.wikia.com/wiki/Omni_completion

4、python-mode
功能比较强大的一个补全软件,详见https://github.com/klen/python-mode#manually

自动补全Opencv函数

由于体验过pydiction以及omni completion,所以只介绍这两个插件

1、pydiction
其补全依赖于complete-dict,而对于第三方的module,其提供了pydiction.py的脚本来完善。
在命令行中输入 python pydiction.py modulename,其将自动更新原本的complete-dict。我们在opencv的安装文件中找到 opencv\modules\python\src2文件夹,利用pydiction.py对completion-dict进行更新,将更新后的completion-dict放到  vim73\ftplugin中,并在_vimrc中配置
let g:pydiction_location = 'YourDir\Vim\vim73\ftplugin\complete-dict'


2、omni completion
其对python内建的模块又补全功能,但需要import后,才能支持该模块的自动补全(快捷键<C-x>+<C-o>)。其对当前打开的文档内容也有自动补全的动能。(<C-p>,<C-n>,<C-e>,previous,next,end)。对于第三方的模板,可以通过Ctags来支持。
在opencv的安装文件 opencv\modules\python\src2文件夹下,进行Ctags -R *,来生成相应的tags,将生成的tags添加到vim的配置文件_vimrc中 
set tags+=YourDir\tags
即可对opencv相应的python函数进行自动补全。(C/C++方法一样,在相应的源文件中生成tag,或直接对整个opencv目录生成tag即可)

pydiction与omni completion对比

1、pydiction补全无需导入模块即可补全(关键字都以生成在complete-dict中,不加以区分),导致补全选项繁多,不便于选择。而后者对模块加以区分,须import后方可补全。
2、前者对于补全后的函数无参数说明,后者补全后函数doc string以及函数的参数都将显示在preview中,方便编程。注意配置是加上:
filetype plugin indent on '默认为关,将其打开
set completeopt=longest,menu,preview  'preview须加上,否则看不到doc string以及函数参数


3、前者只需要<Tab>即可补全,后者需要组合两个快捷键<C-x>+<C-o>才能补全,操作繁琐一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息