8

jedi-vimのREADMEを読みました。 https://github.com/davidhalter/jedi

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

djangoをpipでインストールし、まったく同じコードを試してDjangoのオムニ補完をテストしましたが、機能しません。

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

標準ライブラリのオムニ補完は完璧に機能しています。

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

非標準ライブラリでオムニ補完を使用するための構成を行う必要がありますか?

4

2 に答える 2

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 を確認することをお勧めします。これはすばらしい完全なプラグインです。これは jedi の代わりではありません。実際、python 補完の依存関係として jedi があります。

于 2013-11-11T01:27:32.207 に答える
1

これを試すことができます:sys.path.append(/path/to/lib)

非標準ライブラリとして SUMO/TraCI を使用しています。

sys.path.append("/path/to/SUMO/tools/")traci メソッドを使用する前に追加した Python コードでは、Vim での補完は完全に機能します。

于 2018-12-17T19:02:55.523 に答える