W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
VS Code 當(dāng)中的自動補全內(nèi)容,其實是由語言服務(wù)來提供的。本文介紹VS Code自動補全功能和VS Code自動補全設(shè)置。
VS Code 為編程語言工作者提供了統(tǒng)一的 API ,即 Language Server Protocol,每種語言都能夠通過實現(xiàn)這個 API 在 VS Code 上得到類似 IDE 的開發(fā)體驗,而各個語言根據(jù)這個 API 實現(xiàn)的服務(wù),就被稱為語言服務(wù)。
語言服務(wù)會根據(jù)當(dāng)前的項目、當(dāng)前的文件,以及光標所在的位置,為我們提供一個建議列表。這個列表包含了在當(dāng)前光標位置下我們可能會輸入的代碼。當(dāng)我們不斷地輸入字符,VS Code 就會根據(jù)當(dāng)前輸入的字符,在這個列表進行過濾。
function foo() {
bar("Hello World");
}
foo()
function bar(a) {
}
JavaScript
今天我們繼續(xù)使用一段 JavaScript 代碼來做例子。當(dāng)我們在編輯器里輸入 console. 之后,VS Code 里的 JavaScript 語言服務(wù),會給我們建議與 console 相關(guān)的 API。
當(dāng)我們找到了合適的函數(shù)后,按下 Tab 鍵或者回車鍵就可以將其補全。
如果我們偶爾覺得這個自動補全窗口是多余的,希望暫時不看到它,可以按下 Escape 鍵將其隱藏。后續(xù)如果希望再次看到這個窗口,除了通過打字來將其調(diào)出以外,我們還可以按下 “Ctrl + 空格鍵”來手動地調(diào)出建議列表。
剛才我們提到,VS Code 會根據(jù)我們輸入的字符在這個建議列表里進行過濾。同時,這個過濾是允許我們犯一點小錯誤的,比如打字特別快的時候少打一個字母,VS Code 也能處理這個情況。比如在下面的動圖里,我想使用 console 里的 debug 函數(shù),但是我只打了 db 兩個字母,建議列表依然為我提供了 debug 這個選項。
上面的這幾個窗口,它們都是通過我們輸入的內(nèi)容自動觸發(fā)的,也就是說,編程語言決定了我們什么時候看到什么內(nèi)容。雖然我們可以通過快捷鍵將其快速地關(guān)閉和喚出,但是有的時候自動補全窗口出現(xiàn)得過于頻繁,也是會影響我們的編程體驗的,畢竟懸浮窗口會遮蓋一部分代碼,影響我們的閱讀。
不過,我們可以通過幾個設(shè)置,控制自動補全窗口出現(xiàn)的頻率和方式,甚至這個窗口的大小。
首先我們可以通過設(shè)置 “editor.quickSuggestions” 來決定在什么語境下自動補全窗口會被喚出。默認設(shè)置如下:
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
}
JSON
這個配置有三個選項:other、comments和strings。其中,comments 就是代碼注釋,strings 就是指字符串。默認情況下,當(dāng)光標在代碼注釋或者字符串里,自動補全窗口就不會被自動喚出了。但如果你希望這個窗口永遠不被自動喚出,那么你就需要將“other” 也改為 “false”。
這時你可能會問了,如果關(guān)閉了這個設(shè)置,我想看到自動補全該怎么辦呢?不用擔(dān)心,當(dāng)你按下 “Ctrl + 空格鍵” 之后,這個窗口依然會被打開,不管設(shè)置是關(guān)閉還是開啟的狀態(tài)。看到這個設(shè)置,你肯定也就明白了,為什么默認情況下你在寫注釋的時候沒有代碼自動補全的提示了吧。
參數(shù)預(yù)覽窗口也是一樣的,你可以通過參數(shù) “editor.parameterHints.enabled” 將其關(guān)閉。當(dāng)你覺得自己需要看一看參數(shù)預(yù)覽時,按下快捷鍵或者通過命令面板就能夠?qū)⑵浯蜷_了。
上面的這個設(shè)置決定“是與否”的問題,但你也可以控制自動補全窗口出現(xiàn)的時間。自動補全窗口監(jiān)聽文件內(nèi)容的變化,當(dāng)你停止輸入時,它就會試著給你提供建議。但是有的時候你打字稍微快一些,自動補全窗口才剛剛出現(xiàn),你就輸入了更多的內(nèi)容,緊接著代碼服務(wù)就要重新計算并提供建議了。如果你希望減少這種不必要的提示,可以增大設(shè)置 “editor.quickSuggestionsDelay” 的值,這樣在你輸入完代碼后,自動補全窗口就會多等一會兒,然后再跳出來。
其他幾個自動補全的設(shè)置,你可以在設(shè)置里搜一搜 “editor.suggest”,自己修改玩一玩。
上面提到的幾個功能,它們都依托于語言服務(wù)來提供內(nèi)容。但是有的時候,語言服務(wù)并不完美。編輯器于是提供了一種相對 “笨” 一些的提示,那就是基于單詞的提示。編輯器通過分析當(dāng)前的文件里的內(nèi)容,進行簡單的正則表達式匹配,給我們建議已經(jīng)出現(xiàn)過的單詞。
當(dāng)然,如果你覺得語言服務(wù)的提示已經(jīng)足夠好了,不需要這么暴力、這么笨的文本提示,那你也可以通過設(shè)置 “editor.wordBasedSuggestions” 將其關(guān)閉。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: