2013-03-03 2 views
8

Я прочитал README of jedi-vim. https://github.com/davidhalter/jedijedi-vim omni завершение с нестандартной библиотекой

Скриншоты omni комплектуются нестандартной библиотекой (Django).

Я установил django by pip и попробовал точно такой же код, чтобы проверить полное завершение Django, но он не работает.

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

Полностью завершенная работа стандартной библиотеки работает.

Я обычно использую некоторую нестандартную библиотеку, поэтому я хочу использовать omni-завершение с этими библиотеками.

Должен ли я выполнить некоторую конфигурацию для использования полного завершения с нестандартными библиотеками?

+0

Пожалуйста, напишите 'set omnifunc' и': messages' –

+0

возможно релевантный: http://stackoverflow.com/questions/2084875/vims-omnicompletion-with-python-just-doesnt-work. Короче говоря, проверьте, что ': py print (sys.path)' показывает. – Yosh

ответ

2

Большинство третьих библиотек должны работать из коробки, 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.