🚀 在 VS Code 中取得

IntelliSense

IntelliSense 是一般術語,適用於各種程式碼編輯功能,包括:程式碼完成、參數資訊、快速資訊和成員清單。IntelliSense 功能有時也稱為其他名稱,例如「程式碼完成」、「內容輔助」和「程式碼提示」。

適用於您的程式設計語言的 IntelliSense

Visual Studio Code IntelliSense 隨即提供 JavaScript、TypeScript、JSON、HTML、CSS、SCSS 和 Less 的支援。VS Code 支援任何程式設計語言的以字詞為基礎的完成,但也可以透過安裝語言擴充功能來設定更豐富的 IntelliSense。

以下是 Visual Studio Marketplace 中最熱門的語言擴充功能。選取下方的擴充功能磚,以閱讀描述和評論,以決定哪個擴充功能最適合您。

IntelliSense 功能

VS Code IntelliSense 功能由語言服務提供技術支援。語言服務會根據語言語意和來源程式碼分析,提供智慧型程式碼完成。如果語言服務知道可能的完成,IntelliSense 建議會在您輸入時彈出。如果您繼續輸入字元,成員清單 (變數、方法等等) 會經過篩選,僅包含包含您輸入字元的成員。按下 TabEnter 將會插入選取的成員。

您可以在任何編輯器視窗中輸入 ⌃Space (Windows、Linux Ctrl+Space) 或輸入觸發字元 (例如 JavaScript 中的點字元 (.)),以觸發 IntelliSense。

提示

建議控制項支援 CamelCase 篩選,這表示您可以輸入方法名稱中大寫的字母,以限制建議。例如,「cra」會顯示「createApplication」。

如果您願意,可以在輸入時關閉 IntelliSense。請參閱自訂 IntelliSense,以瞭解如何停用或自訂 VS Code 的 IntelliSense 功能。

如語言服務所提供,您可以按下 ⌃Space (Windows、Linux Ctrl+Space) 或選取 > 圖示,以查看每個方法的快速資訊。方法的隨附文件會向側邊展開。當您瀏覽清單時,展開的文件會保持可用並更新。您可以再次按下 ⌃Space (Windows、Linux Ctrl+Space) 或選取關閉圖示來關閉此功能。

選擇方法之後,系統會提供參數資訊給您。

parameter info

在適用的情況下,語言服務會在快速資訊和方法簽章中浮現基礎類型。在上一個螢幕擷取畫面中,您可以看到數個 any 類型。由於 JavaScript 是動態的,不需要或強制執行類型,因此 any 表示變數可以是任何類型。

完成種類

下列螢幕擷取畫面中的 JavaScript 程式碼說明 IntelliSense 完成。IntelliSense 會提供推斷的建議和專案的全域識別項。推斷的符號會先呈現,然後是全域識別項 (以 abc 字詞圖示表示)。

intellisense icons

VS Code IntelliSense 提供不同類型的完成,包括語言伺服器建議、程式碼片段和簡單的以字詞為基礎的文字完成。

圖示 名稱 符號類型
方法和函式 methodfunctionconstructor
變數 variable
欄位 field
類型參數 typeParameter
常數 constant
類別 class
介面 interface
結構 struct
事件 event
運算子 operator
模組 module
屬性和屬性 property
列舉 enum
列舉成員 enumMember
參考 reference
關鍵字 keyword
檔案 file
資料夾 folder
色彩 color
單位 unit
程式碼片段前置詞 snippet
字詞 text

自訂 IntelliSense

您可以在設定和鍵盤快速鍵中自訂 IntelliSense 體驗。

設定

下方顯示的設定是預設設定。您可以在設定編輯器 (⌘, (Windows、Linux Ctrl+,)) 中變更這些設定。

{
    // Controls if quick suggestions should show up while typing
    "editor.quickSuggestions": {
        "other": true,
        "comments": false,
        "strings": false
    },

     // Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.
    "editor.acceptSuggestionOnCommitCharacter": true,

    // Controls if suggestions should be accepted on 'Enter' - in addition to 'Tab'. Helps to avoid ambiguity between inserting new lines or accepting suggestions. The value 'smart' means only accept a suggestion with Enter when it makes a textual change
    "editor.acceptSuggestionOnEnter": "on",

    // Controls the delay in ms after which quick suggestions will show up.
    "editor.quickSuggestionsDelay": 10,

    // Controls if suggestions should automatically show up when typing trigger characters
    "editor.suggestOnTriggerCharacters": true,

    // Controls if pressing tab inserts the best suggestion and if tab cycles through other suggestions
    "editor.tabCompletion": "off",

    // Controls whether sorting favours words that appear close to the cursor
    "editor.suggest.localityBonus": true,

    // Controls how suggestions are pre-selected when showing the suggest list
    "editor.suggestSelection": "first",

    // Enable word based suggestions
    "editor.wordBasedSuggestions": "matchingDocuments",

    // Enable parameter hints
    "editor.parameterHints.enabled": true,
}

Tab 鍵完成

編輯器支援Tab 鍵完成,這會在按下 Tab 時插入最佳比對完成。無論建議控制項是否顯示,這都適用。此外,在插入建議之後按下 Tab 會插入下一個最佳建議。

根據預設,Tab 鍵完成已停用。使用 editor.tabCompletion 設定來啟用它。存在下列值

  • off - (預設) Tab 鍵完成已停用。
  • on - Tab 鍵完成已針對所有建議啟用,且重複叫用會插入下一個最佳建議。
  • onlySnippets - Tab 鍵完成只會插入靜態程式碼片段,這些片段會前置詞比對目前的行前置詞。

鄰近區域加成

建議的排序取決於擴充功能資訊,以及它們與您目前輸入的字詞的比對程度。此外,您可以使用 editor.suggest.localityBonus 設定,要求編輯器增強出現在游標位置附近的建議。

Sorted By Locality

在上一個螢幕擷取畫面中,您可以看到 countcontextcolocated 會根據它們出現的範圍 (迴圈、函式、檔案) 進行排序。

建議選取

根據預設,VS Code 會預先選取建議清單中的第一個建議。如果您想要不同的行為,例如,一律選取建議清單中最近使用的項目,則可以使用 editor.suggestSelection 設定。

可用的 editor.suggestSelection 值為

  • first - (預設) 一律選取清單頂端的項目。
  • recentlyUsed - 除非前置詞 (輸入以選取) 選取不同的項目,否則會選取先前使用的項目。
  • recentlyUsedByPrefix - 根據先前已完成這些建議的前置詞來選取項目。

選取最近使用的項目非常有用,因為您可以快速插入相同的完成多次。

「輸入以選取」表示目前的前置詞 (大約是游標左邊的文字) 用於篩選和排序建議。當發生這種情況,且其結果與 recentlyUsed 的結果不同時,系統會優先處理它。

當使用最後一個選項 recentlyUsedByPrefix 時,VS Code 會記住針對特定前置詞 (部分文字) 選取的項目。例如,如果您輸入 co,然後選取 console,則下次您輸入 co 時,建議 console 將會預先選取。這可讓您將各種前置詞快速對應至不同的建議,例如 co -> consolecon -> const

建議中的程式碼片段

根據預設,VS Code 會在一個控制項中顯示程式碼片段和完成建議。您可以使用 editor.snippetSuggestions 設定來修改行為。若要從建議控制項移除程式碼片段,請將值設定為 "none"。如果您想要查看程式碼片段,可以指定相對於建議的順序;在頂端 ("top")、在底部 ("bottom") 或內嵌依字母順序排序 ("inline")。預設值為 "inline"

鍵盤快速鍵

此處顯示的鍵盤快速鍵是預設鍵盤快速鍵。若要指派不同的鍵盤快速鍵,請使用鍵盤快速鍵編輯器 (⌘K ⌘S (Windows、Linux Ctrl+K Ctrl+S))。

命令 鍵盤快速鍵
editor.action.triggerSuggest ⌃Space (Windows、Linux Ctrl+Space)
toggleSuggestionDetails ⌃Space (Windows、Linux Ctrl+Space)
toggleSuggestionFocus ⌃⌥Space (Windows、Linux Ctrl+Alt+Space)
提示

還有許多與 IntelliSense 相關的鍵盤快速鍵。開啟 [預設鍵盤快速鍵] ([檔案 > 喜好設定 > 鍵盤快速鍵]) 並搜尋「suggest」。

透過 AI 增強完成

GitHub Copilot 會在您於編輯器中輸入時提供程式碼建議。您也可以詢問 Copilot 與程式碼相關的問題,例如如何最佳地編寫程式碼、如何修正錯誤,或其他人程式碼的運作方式。

若要開始使用

  1. 安裝 GitHub Copilot 擴充功能

  2. 透過我們的Copilot 快速入門探索主要功能。

提示

如果您還沒有 Copilot 訂閱,您可以註冊 Copilot 免費方案,即可免費使用 Copilot,並獲得每月完成和聊天互動的限制。

疑難排解

如果您發現 IntelliSense 已停止運作,則語言服務可能未執行。嘗試重新啟動 VS Code,這應該可以解決問題。如果您在安裝語言擴充功能後仍然缺少 IntelliSense 功能,請在語言擴充功能的存放庫中開啟問題。

提示

如需設定 JavaScript IntelliSense 和針對其進行疑難排解,請參閱 JavaScript 文件

特定的語言擴充功能可能不支援所有 VS Code IntelliSense 功能。檢閱擴充功能的 README,以找出支援的功能。如果您認為語言擴充功能有問題,您通常可以透過 VS Code Marketplace 找到擴充功能的問題存放庫。瀏覽至擴充功能的 [詳細資料] 頁面,然後選取 [支援] 連結。

後續步驟

IntelliSense 只是 VS Code 強大功能之一。請繼續閱讀以深入瞭解

常見問題

為什麼我沒有收到任何建議?

這可能是由各種原因所造成。首先,嘗試重新啟動 VS Code。如果問題持續發生,請參閱語言擴充功能的文件。如需 JavaScript 特定的疑難排解,請參閱 JavaScript 語言主題

為什麼我看不到方法和變數建議?

image of IntelliSense showing no useful suggestions

此問題是由 JavaScript 中遺失類型宣告 (類型資訊) 檔案所造成。最常見的 JavaScript 程式庫隨附宣告檔案,或具有可用的類型宣告檔案。

請務必為您使用的程式庫安裝對應的 npm 或 yarn 套件。深入瞭解 使用 JavaScript 文章中的 IntelliSense。如需其他語言,請參閱擴充功能的文件。