有谁知道如何设置自动完成与python,django和vim很好地协同工作?
我一直在尝试使用pysmell,但我似乎无法正确设置它(或者我可能不知道它是如何工作的).现在,我在django目录中运行pysmell(我正在使用trunk)并将生成的标签移动到我的项目目录,然后我还在项目目录中运行pysmell.但是Vim没有拿起django标签,并且它们没有自动完成.
有谁知道如何在vim中设置自动完成,以便它将在我自己的代码中完成长django函数(如get_object_or_404)以及类/函数?我在谷歌上搜索过但没有找到任何好的资源.
谢谢.
首先,谢谢你提出这个问题,因为这迫使我自己解决这个问题,这很棒!
这是我用作参考的页面:PySmell v0.6发布:orestis.gr
使用该setup.py install
命令安装PySmell .
PYSMELLTAGS
通过转到您的site-packages/django
目录并运行以下命令为django 生成文件:pysmell . -o ~/PYSMELLTAGS.django
将该文件复制到项目目录,然后运行pysmell .
以生成项目PYSMELLTAGS文件
确保pysmell在你的PYTHONPATH
(export PYTHONPATH=${PYTHONPATH}:/path/to/pysmell/
)
运行vim(vim .
)
来源pysmell.vim
(:source /path/to/pysmell/pysmell.vim
)
设置自动完成命令(:set omnifunc=pysmell#Complete
)
键入^ x ^ o自动完成,它应该工作
我意识到这不是一个可持续的解决方案,但您应该能够将其作为开始使其设置始终有效(例如,将导出添加到.bashrc,将:source添加到.vimrc,设置autocmd FileType python set omnifunc=pysmell#Complete
等等.)
如果这足以让您入手,请告诉我.它对我有用!
编辑
我只是将它添加到我的.vimrc中,只要PYSMELLTAGS
&PYSMELLTAGS.django
文件在我的项目根目录中,它就可以正常工作而无需任何其他工作:
python << EOF import os import sys import vim sys.path.append("/usr/local/python/lib/python2.5/site-packages") EOF exe ":source ~/src/pysmell/pysmell.vim" autocmd FileType python set omnifunc=pysmell#Complete
正如我在其他地方写的那样,我开发了绝地.我认为它比现有的所有解决方案(甚至是PyCharm)要好得多.
https://github.com/davidhalter/jedi-vim
它建立在pythoncomplete上,功能更强大!
它适用于复杂的代码:
并具有其他功能:
有一个可能的功能列表:
内置函数/类支持
复杂的模块/功能/类结构
忽略语法和缩进错误
多次退货/收益率
元组赋值/数组索引/字典索引
例外/带有陈述
*args/**kwargs
装饰
descriptors - > property/staticmethod/classmethod
关闭
生成器(yield语句)/迭代器
支持一些魔术方法:__call__
,__iter__
,__next__
,
__get__
,__getitem__
,__init__
支持list.append,set.add,list.extend等.
(嵌套)列表推导/三元表达式
相对进口
getattr()
/ __getattr__
/__getattribute__
函数注释(py3k功能,现在被忽略,但被解析.我不知道如何处理它们.)
类装饰器(py3k功能,也被忽略,直到我找到一个用例,不能用于Jedi)
简单/通常的sys.path
修改
isinstance
检查if/while/assert
alt text http://blog.dispatched.ch/wp-content/uploads/2009/05/vim-as-python-ide.png
您可以使用缓冲区,缓冲区显示,自动完成,甚至Py Doc显示来设置VIM.
干得好