首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非标准库的jedi-vim omni补全

非标准库的jedi-vim omni补全
EN

Stack Overflow用户
提问于 2013-03-04 03:39:00
回答 2查看 3.8K关注 0票数 8

我读过绝地武士的自述。https://github.com/davidhalter/jedi

有用非标准库(Django)完成的omni的屏幕截图。

我通过pip安装了Django,并尝试了完全相同的代码来测试django的全功能完成,但它不起作用。

代码语言:javascript
复制
Omni completion (^O^N^P) Pattern not found.

标准库的全方位补全功能运行得非常完美。

我通常使用一些非标准库,所以我想对这些库使用全补全。

我应该做一些配置来使用非标准库的全补全功能吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-11 09:27:32

大多数第三个库应该是开箱即用的,Django在自动完成方面不是很好,你需要在你的环境中设置变量DJANGO_SETTINGS,否则大多数导入会引发一个配置不正确的异常,自动完成将不会工作。

您可以在您的virtualenv中设置这个变量,或者在shell中使用别名,或者在.vimrc中使用类似下面的内容

代码语言:javascript
复制
function FindDjangoSettings()
  if strlen($VIRTUAL_ENV) && has('python')
    let output  = system("find $VIRTUAL_ENV \\( -wholename '*/lib/*' -or -wholename '*/install/' \\) -or \\( -name 'settings.py' -print0 \\) | tr '\n' ' '")
    let outarray= split(output, '[\/]\+')
    let module  = outarray[-2] . '.' . 'settings'
    let syspath = system("python -c 'import sys; print sys.path' | tr '\n' ' ' ")
    " let curpath = '/' . join(outarray[:-2], '/')

    execute 'python import sys, os'
    " execute 'python sys.path.append("' . curpath . '")'
    " execute 'python sys.path.append("' . syspath . '")'
    execute 'python sys.path = ' . syspath
    execute 'python os.environ.setdefault("DJANGO_SETTINGS_MODULE", "' . module . '")'
  endif
endfunction
autocmd FileType python call FindDjangoSettings()

这假设您在项目中使用的是virtualenv,如果您使用的是非django的virtualenv,则可能会困扰您。

我也推荐你去看看you complete me plugin,它是一个很棒的完整插件,它不是绝地的替代品,事实上,它有绝地作为python补全的依赖。

票数 2
EN

Stack Overflow用户

发布于 2018-12-18 03:02:56

你可以试试这个:sys.path.append(/path/to/lib)

我使用SUMO/TraCI作为非标准库。

在python代码中,我在使用traci方法之前添加了sys.path.append("/path/to/SUMO/tools/"),然后在Vim中完成就可以完美地工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15189956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档