Большинство третьих библиотек должны работать из коробки, Django не так хорош с автозаполнением, вам нужно, чтобы в вашей среде была установлена переменная DJANGO_SETTINGS
, в противном случае большинство импорта поднимут неправильно настроенное исключение, и автозаполнение не будет работать ,
Вы можете установить эту переменную вы virtualenv, или с псевдонимом, в вашей оболочке, или использовать что-то вроде этого в вашем .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 для чего-то, что не является джанго.
Я также рекомендую вам посмотреть в you complete me plugin, его потрясающий полный плагин, это не замена для джедая, на самом деле он имеет jedi как зависимость для завершения python.
Пожалуйста, напишите 'set omnifunc' и': messages' –
возможно релевантный: http://stackoverflow.com/questions/2084875/vims-omnicompletion-with-python-just-doesnt-work. Короче говоря, проверьте, что ': py print (sys.path)' показывает. – Yosh