[英]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.