有没有人知道如何设置自动完成功能以便与python,django和vim很好地协同工作?
我一直在尝试使用pysmell,但我似乎无法正确设置它(或者我可能不知道它是如何工作的)。现在,我在django目录中运行pysmell(我正在使用trunk)并将生成的标签移动到我的项目目录,然后我还在项目目录中运行pysmell。但是,Vim并没有拿起django标签,而且它们也没有自动完成。
有没有人知道如何在vim中设置自动完成,以便它将在我自己的代码中完成长django函数(如get_object_or_404)以及类/函数?我在谷歌上搜索过但没有找到任何好的资源。
感谢。
答案 0 :(得分:30)
首先,谢谢你提出这个问题,因为它迫使我自己解决这个问题,这很棒!
以下是我用作参考的页面:PySmell v0.6 released : orestis.gr
setup.py install
命令安装PySmell。PYSMELLTAGS
目录并运行:site-packages/django
pysmell . -o ~/PYSMELLTAGS.django
文件
pysmell .
以生成项目PYSMELLTAGS文件PYTHONPATH
(export PYTHONPATH=${PYTHONPATH}:/path/to/pysmell/
)vim .
)pysmell.vim
(:source /path/to/pysmell/pysmell.vim
):set omnifunc=pysmell#Complete
)我意识到这不是一个可持续的解决方案,但您应该能够将其作为开始使其设置始终有效(例如,将导出添加到.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
答案 1 :(得分:13)
正如我在其他地方写的那样,我开发了绝地。我认为它比现有的所有解决方案(甚至是PyCharm)要好得多。
https://github.com/davidhalter/jedi-vim
它建立在pythoncomplete之上,功能更强大!
适用于复杂的代码:
还有其他功能:
列出了所有可能的功能:
__call__
,__iter__
,__next__
,
__get__
,__getitem__
,__init__
getattr()
/ __getattr__
/ __getattribute__
sys.path
修改isinstance
检查if / while / assert 答案 2 :(得分:12)
答案 3 :(得分:3)
我为这个充满热情的ctags运气好了。
我在我的vimrc中使用这个宏:
execute 'map :!/usr/bin/exuberant-ctags -f '.&tags.' --recurse '.$_P4ROOT.' '
您需要稍微修改它,以便它包含您的python / site-packages / django /目录以及您自己的代码。
然后,在vim内点击F2以更新标签,并使用常规vim标签绑定进行导航。
答案 4 :(得分:2)
今天,你不需要在vim中使用django自动完成功能的特殊扩展。确保你有vim支持python。 要检查它,请输入xterm:
vim --version | grep python
+ python -python3 + quickfix + reltime + rightleft -ruby + scrollbind + signs ...... ...
要使工作自动完成,请在.vimrc中添加以下行:
autocmd FileType python set omnifunc = pythoncomplete#Complete
如果有(“python”)
python import sys,os
python sys.path.append('/ home / sergey / workspace / django')
python os.environ ['DJANGO_SETTINGS_MODULE'] ='djangoProject.settings'
ENDIF
其中:
最后,保存并重新启动vim。现在,在'。'之后,按默认ctrl-x ctrl-o来获取自动完成功能。