我阅读了 jedi-vim 的自述文件。 https://github.com/davidhalter/jedi
有omni用非标准库(Django)补全的截图。
我通过 pip 安装了 django 并尝试了完全相同的代码来测试 Django 的 omni 完成,但它不起作用。
Omni completion (^O^N^P) Pattern not found.
标准库的全方位补全工作完美。
我通常使用一些非标准库,所以我想对这些库使用 omni 补全。
我应该做一些配置来使用非标准库的 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,如果你正在为不是 django 的东西使用 virtualenv 可能会打扰你。
我也推荐你看看you complete me plugin ,它是一个很棒的完整插件,它不是 jedi 的替代品,事实上,它有 jedi 作为 python 完成的依赖项。
关于python - jedi-vim omni completion with not standard library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15189956/