2013-03-03 30 views
8

私はjedi-vimのREADMEを読んだ。 https://github.com/davidhalter/jedijedi-vim omni標準ライブラリではない

非標準ライブラリ(Django)でオムニを完成させるスクリーンショットがあります。

私はdjangoをpipでインストールし、Djangoのオムニ完了をテストするために全く同じコードを試しましたが、動作しません。

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

標準ライブラリのオムニコンプリートは完全に機能しています。

私は通常、いくつかの非標準ライブラリを使用していますので、それらのライブラリでオムニコンプリートを使用したいと思います。

非標準ライブラリでオムニコンプリートを使用するための設定を行う必要がありますか?

+0

'set omnifunc'と':messages'を投稿してください。 –

+0

おそらく関連しています:http://stackoverflow.com/questions/2084875/vims-omnicompletion-with-python-just-doesnt-work。つまり、 ':py print(sys.path)'が示すものを確認してください。 – Yosh

答えて

2

ほとんどの3番目のライブラリはすぐに使えるはずです.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を使用して、そして可能性がありますされていることを前提としていあなたがdjangoではないもののためにvirtualenvを使用している場合は、あなたを気にします。私も、you complete me pluginでその素晴らしい、完全なプラグインを見てすることをお勧めいたします

、それは実際には、それはPythonの完了のための依存関係としてジェダイあり、ジェダイに代わるものではありません。

関連する問題