VS Code無法實(shí)現(xiàn)"轉(zhuǎn)到定義"?
導(dǎo)讀
VS Code一度個人日常工作中必不可少的IDE之一,在前文中也提到,它和Jupyterlab+Pycharm構(gòu)成了個人工作日常IDE組合。然而,近日在新電腦中搭建Python環(huán)境中,發(fā)現(xiàn)VS Code的一個重要功能——"轉(zhuǎn)到定義"無法使用,這儼然使VS Code的威力大打折扣,畢竟個人主要是使用其來查看第三方庫源碼,通過該功能可以方便的查找引用和定義。本文針對此問題進(jìn)行完整的問題復(fù)現(xiàn)和分析解決。


已安裝插件列表

右鍵類名,無“轉(zhuǎn)到定義”選項

網(wǎng)友踩坑解決方案1

網(wǎng)友踩坑解決方案2

網(wǎng)友踩坑3——未解決
發(fā)現(xiàn)遇到該問題的不止我一人,我就放心了……
然而,逐一試驗(yàn)了上述方法,要么是無法完成指定流程,要么是無法解決問題。但從中,仍能細(xì)心的發(fā)現(xiàn)大家把解決這一問題的思路聚焦于Jedi上。那么Jedi是啥呢?
經(jīng)過一番查閱資料,了解到這樣一組介紹:
Jedi?是一個可以在?IDEs?或者編輯器中使用的?Python 代碼自動補(bǔ)齊和靜態(tài)分析工具。它的歷史重點(diǎn)是自動完成,但現(xiàn)在也進(jìn)行靜態(tài)分析。Jedi 好用并且快速,?可以搜索相關(guān)的名稱并列出 Python 文件中的所有名稱并推斷它們。Jedi 理解 docstrings,你也可以在你的 REPL 中使用 Jedi 自動補(bǔ)齊完成。
雖然這段話一看就是機(jī)器翻譯的英語介紹,但仍能從中g(shù)et到Jedi的主體功能:代碼自動補(bǔ)全+名稱關(guān)聯(lián)和推斷。具體到VS Code中,Jedi是如果產(chǎn)生作用的呢?這就不得不從VS Code安裝Python插件后的一組設(shè)置說起。正常情況下,VS Code中完成Python插件安裝后,會自動在settings.json中增加這樣一條設(shè)置:
"python.languageServer": "Jedi"
????"python.languageServer":?"Jedi"
經(jīng)過嘗試,發(fā)現(xiàn)將python語言服務(wù)器分別設(shè)置為Microsoft和None時,均存在該問題,即沒有轉(zhuǎn)到定義選項,而設(shè)置Jedi時則功能正常。


當(dāng)然,此時已自動將settings.json中python語言服務(wù)器設(shè)置為Pylance:
"python.languageServer": "Pylance"詳細(xì)查看該插件,看到介紹中介紹了其主要特性,而后,在里面嘗試敲了幾句代碼,發(fā)現(xiàn)在Pylance插件的作用下,VS Code竟變得如絲般順滑!微軟誠不可欺我,果真是一款良心插件。
搜索了這款插件的風(fēng)評,居然一致認(rèn)為是微軟Python團(tuán)隊的良心插件,發(fā)布于2020年6月,只是自己未曾了解而已。贊!
VS Code中轉(zhuǎn)到定義功能,核心是受settings.json中的python.languageServer參數(shù)控制,該參數(shù)合法取值有Jedi、Microsoft和None,安裝Pylance插件后還支持Pylance。當(dāng)設(shè)置為Microsoft和None時,無法實(shí)現(xiàn)轉(zhuǎn)到定義,而設(shè)置Jedi和Pylance時可以。
VS Code中搭建Python環(huán)境,建議安裝兩個插件:即Python+Pylance,其中前者是VS Code支持Python編譯的前提,后者是基于Python的擴(kuò)展,支持自動補(bǔ)全、參數(shù)提示、轉(zhuǎn)到定義等多項功能改進(jìn)。

請獲獎?wù)弑M快通過公眾號菜單->關(guān)于添加小編微信,聯(lián)系送書事宜

相關(guān)閱讀:
