簡體   English   中英

jedi-vim omni完成,沒有標准庫

[英]jedi-vim omni completion with not standard library

我閱讀了jedi-vim的自述文件。 https://github.com/davidhalter/jedi

有omni的屏幕快照,其中包含非標准庫(Django)。

我通過pip安裝了django,並嘗試了完全相同的代碼來測試Django的全部完成情況,但是它不起作用。

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

標准庫的全方位完成工作非常完美。

我通常使用一些非標准庫,因此我想對這些庫使用全能補全。

我應該對非標准庫使用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 ,並且如果您將virtualenv用於非Django,則可能會打擾您。

我還建議您查看完成我的插件 ,它是一個了不起的完整插件,它不是jedi的替代品,實際上,它具有jedi作為python完成的依賴項。

您可以嘗試以下操作: sys.path.append(/path/to/lib)

我使用SUMO / TraCI作為非標准庫。

在python代碼中,在使用traci方法之前,我已經添加了sys.path.append("/path/to/SUMO/tools/") ,然后在Vim中完美地完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM