我阅读了jedi-vim的自述文件。
https://github.com/davidhalter/jedi

有omni的屏幕快照,其中包含非标准库(Django)。

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

Omni completion (^O^N^P) Pattern not found.

标准库的全方位完成工作非常完美。

我通常使用一些非标准库,因此我想对这些库使用全能补全。

我应该对非标准库使用omni完整功能进行一些配置吗?

最佳答案

大多数第三个库都应该开箱即用,Django对自动补全不是很好,您需要在环境中设置变量DJANGO_SETTINGS,否则大多数导入会引发配置不当的异常,并且自动补全将不起作用。

您可以在virtualenv中设置此变量,也可以在 shell 中设置别名,或者在.vimrc中使用类似的设置:

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,并且如果您将virtualenv用于不是django的内容,则可能会打扰您。

我还建议您查看you complete me plugin,它是一个了不起的完整插件,它不是jedi的替代品,实际上,它具有jedi作为python完成的依赖项。

关于python - 带有非标准库的jedi-vim omni补全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15189956/

10-14 02:31