亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用vim-jedi插件自動(dòng)補(bǔ)全django的蹩腳方法

CntChen / 2794人閱讀

摘要:最近在用,碰到了這么個(gè)問題,花了好一會(huì)才解決,在這里記錄一篇,也想請(qǐng)教各位有沒有其他更好的處理方法。這是幾個(gè)使用中的提示參數(shù)提示代碼補(bǔ)全不過使用虛擬環(huán)境時(shí),會(huì)出現(xiàn)找不到的問題。最后,還存在使用版本的問題。

最近在用jedi-vim,碰到了這么個(gè)問題,花了好一會(huì)才解決,在這里記錄一篇,也想請(qǐng)教各位有沒有其他更好的處理方法。

jede是用python開發(fā)的庫,能實(shí)現(xiàn)python補(bǔ)全、提示、變量查找等等,這個(gè)在開發(fā)中特別有用,代碼補(bǔ)全可以減少輸入字符數(shù),代碼提示則可以減少看文檔的時(shí)間,總之,jedi-vim實(shí)在是程序員居家旅行、殺人越貨的必備利器。
這是幾個(gè)使用中的screenshot:
import提示

參數(shù)提示

代碼補(bǔ)全

不過使用虛擬環(huán)境virtualenv時(shí),會(huì)出現(xiàn)jedi找不到django的問題。
首先,jedi的查找范圍是sys.path,在vim中運(yùn)行:

python << EOF
print(sys.path)
EOF

結(jié)果;

["/usr/lib/python2.7", "/usr/lib/python2.7/plat-linux2", "/usr/lib/python2.7/lib-tk", "/usr/lib/python2.7/lib-old", "/usr/lib/python2.7/lib-dynload", "/usr/local/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages/PIL", "/usr/lib/python2.7/dist-packages/gst-0.10", "/usr/lib/python2.7/dist-packages/gtk-2.0", "/usr/lib/pymodules/python2.7", "/usr/lib/python2.7/dist-packages/ubuntu-sso-client", "/usr/lib/python2.7/dist-packages/ubuntuone-client", "/usr/lib/python2.7/dist-packages/ubuntuone-control-panel", "/usr/lib/python2.7/dist-packages/ubuntuone-couch", "/usr/lib/python2.7/dist-packages/ubuntuone-installer", "/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol", "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode"]

確實(shí)是沒有把django所在的目錄加進(jìn)來。

其次。其實(shí)jedi現(xiàn)在也已經(jīng)支持虛擬環(huán)境查找,在jedi的module.py中,實(shí)際上已經(jīng)有這個(gè)函數(shù)了:

def get_sys_path():
    def check_virtual_env(sys_path):
        """ Add virtualenv"s site-packages to the `sys.path`."""
        venv = os.getenv("VIRTUAL_ENV")
        if not venv:
            return
        venv = os.path.abspath(venv)
        p = os.path.join(
            venv, "lib", "python%d.%d" % sys.version_info[:2], "site-packages")
        sys_path.insert(0, p)

    check_virtual_env(sys.path)
    return [p for p in sys.path if p != ""]       

但是啟動(dòng)virtualenv后,在啟動(dòng)vim,觀察sys.path,沒有變化,所以get_sys_path函數(shù)沒有運(yùn)行。
最后,還存在vim使用python版本的問題。vim在運(yùn)行python代碼中,會(huì)使用安裝vim指定的python解釋器,在我的環(huán)境中是python2.7,但是我用的虛擬環(huán)境是python3.3,這行代碼:

p = os.path.join(venv, "lib", "python%d.%d" % sys.version_info[:2], "site-packages")

得到的路徑是:
/home/me/python3/lib/python2.7/site-packages
而實(shí)際上,虛擬環(huán)境的site-packages在:
/home/me/python3/lib/python2.7/site-packages
也就是說,即便vim啟動(dòng)時(shí)執(zhí)行了jedi的get_sys_path函數(shù),得到的結(jié)果也是錯(cuò)的。

最后,我參考了別人的.vimrc,弄了這個(gè)蹩腳的方法,在.vimrc中加入:

" Add the virtualenv"s site-packages to vim path
if has("python")
py << EOF
import os.path
import sys
import vim
if "VIRTUAL_ENV" in os.environ:
    project_base_dir = os.environ["VIRTUAL_ENV"]
    sys.path.insert(0, os.path.join(project_base_dir, "lib", "python%d.%d" % sys.version_info[:2], "site-packages"))
EOF
endif

其實(shí)就是把虛擬路徑地址硬編碼到sys.path中。

如果擁有系統(tǒng)權(quán)限,其實(shí)還有個(gè)方法,就是把django直接安裝到vim使用的python的庫中。

最后我還是想吐槽一下jedi-vim的不足,jedi-vim的補(bǔ)全一定要手工Ctrl+space。我原來用的補(bǔ)全是根據(jù)字符串匹配的,不能根據(jù)python語法做補(bǔ)全和提示,但能自動(dòng)彈出,如果在代碼中寫了很多長(zhǎng)變量,這時(shí)候自動(dòng)彈出就省了不少力氣。要解決這個(gè)問題,可以試試youcompleteme,這個(gè)包含了jedi,并且引入了fuzzy匹配。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/24768.html

相關(guān)文章

  • 六款好用Python IDE

    摘要:以插件擴(kuò)展系統(tǒng)為代表的可定制框架,是現(xiàn)代的另一個(gè)流行趨勢(shì)。這里收集了一些對(duì)開發(fā)者非常有幫助的,比較好的。眾所周知,是開發(fā)平臺(tái)產(chǎn)品的利器,是等應(yīng)用開發(fā)的首選。開源,可以用下載到最新的源代碼,依賴。 工欲善其事,必先利其器,如果說編程是程序員的手藝,那么IDE就是程序員吃飯的家伙了。 一個(gè)優(yōu)秀的IDE,最重要的就是在普通文本編輯之外,提供針對(duì)特定語言的各種快捷編輯功能,讓程序員盡可能快捷、...

    DandJ 評(píng)論0 收藏0
  • 超好用谷歌瀏覽器、Sublime Text、Phpstorm、油猴插件合集

    摘要:分享一些超好用插件,打造一個(gè)不一樣的瀏覽器編輯器。一谷歌瀏覽器插件谷歌訪問助手強(qiáng)烈推薦一鍵安裝,無需其他配置,即可訪問谷歌。谷歌瀏覽器是很耗內(nèi)存的,該插件會(huì)自動(dòng)掛起長(zhǎng)時(shí)間未使用的網(wǎng)頁,來釋放系統(tǒng)資源。 showImg(https://segmentfault.com/img/remote/1460000014011338); 分享一些超好用插件,打造一個(gè)不一樣的 GitHub、瀏覽器、...

    Rango 評(píng)論0 收藏0
  • VIM自動(dòng)補(bǔ)全插件:deoplete

    摘要:添加補(bǔ)全源一般如果沒有安裝任何源,則自動(dòng)補(bǔ)全只會(huì)根據(jù)當(dāng)前文件已有的名字進(jìn)行猜測(cè)。我們要的效果是根據(jù)語言的特性,補(bǔ)全引用自帶庫第三方庫的所有類函數(shù)等。 Nvim用的是Shougo開發(fā)的NCM,但是在VIM 8+就要用同一個(gè)作者開發(fā)的Deoplete. 參考官網(wǎng):Shougo/deoplete.nvim 注意:這里只講怎么給vim8安裝。 安裝 第一步:安裝所有依賴 # 安裝VIM 8 #...

    Ajian 評(píng)論0 收藏0
  • Vim Snipmate 自動(dòng)補(bǔ)全插件

    摘要:使用方法輸入狀態(tài)下,直接按,就會(huì)自動(dòng)打出相關(guān)的預(yù)設(shè)片段。如何自定義直接在目錄下添加文件即可。注意以下幾點(diǎn)目錄是位于所有插件之外的,所以不會(huì)因插件更新而被刪除。 在~/.vimrc的Vundle插件管理函數(shù)中添加以下內(nèi)容(插件本身和所依賴的插件): Plugin MarcWeber/vim-addon-mw-utils Plugin tomtom/tlib_vim ...

    funnyZhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<