現已釋出!閱讀關於 11 月新增功能和修復的內容。

IntelliSense

IntelliSense 是各種程式碼編輯功能的通用術語,包括:程式碼補全、引數資訊、快速資訊和成員列表。IntelliSense 功能有時也被稱為“程式碼補全”、“內容輔助”和“程式碼提示”。

為你的程式語言提供 IntelliSense

Visual Studio Code 內建支援 JavaScript、TypeScript、JSON、HTML、CSS、SCSS 和 Less 的 IntelliSense。VS Code 支援任何程式語言的基於單詞的補全,但也可以透過安裝語言擴充套件來配置更豐富的 IntelliSense。

以下是 Visual Studio Marketplace 中最受歡迎的語言擴充套件。選擇下面的擴充套件磁貼以閱讀說明和評論,以決定最適合你的擴充套件。

IntelliSense 功能

VS Code IntelliSense 由語言服務提供支援。語言服務根據語言語義和原始碼分析提供智慧程式碼補全。如果語言服務知道可能的補全項,IntelliSense 建議會在你鍵入時彈出。如果你繼續鍵入字元,成員列表(變數、方法等)將僅包含包含你鍵入字元的成員。按 TabEnter 將插入選定的成員。

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

提示

建議控制元件支援駝峰式過濾,這意味著你可以鍵入方法名稱中大寫的字母來限制建議。例如,“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 提問與編碼相關的問題,例如如何最好地編寫某個功能、如何修復 bug,或者別人的程式碼是如何工作的。

開始使用

  1. 安裝 GitHub Copilot 擴充套件

  2. 透過我們的 Copilot 快速入門 瞭解其核心功能。

提示

如果你還沒有 Copilot 訂閱,可以透過註冊 Copilot 免費計劃 來免費使用 Copilot,並獲得每月一定的補全和聊天互動次數。

故障排除

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

注意

在非常大的工作區中,IntelliSense 功能可能會出於效能原因而部分停用。如果發生這種情況,請嘗試使用 files.excludesearch.exclude 設定排除大型資料夾(如 node_modules 或構建輸出目錄)。

提示

有關配置和故障排除 JavaScript IntelliSense,請參閱 JavaScript 文件

特定的語言擴充套件可能不支援所有 VS Code IntelliSense 功能。請檢視擴充套件的 README 以瞭解支援的內容。如果你認為語言擴充套件存在問題,通常可以透過 VS Code Marketplace 找到擴充套件的 issue 儲存庫。導航到擴充套件的詳細資訊頁面,然後選擇支援連結。

後續步驟

IntelliSense 只是 VS Code 的強大功能之一。繼續閱讀以瞭解更多

常見問題

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

這可能由多種原因引起。首先,嘗試重新啟動 VS Code。如果問題仍然存在,請查閱語言擴充套件的文件。有關 JavaScript 特定故障排除,請參閱 JavaScript 語言主題

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

image of IntelliSense showing no useful suggestions

此問題是由於 JavaScript 中缺少型別宣告(typings)檔案引起的。大多數常見的 JavaScript 庫都附帶宣告檔案,或者有可用的型別宣告檔案。

確保安裝了你正在使用的庫的相應 npm 或 yarn 包。在《處理 JavaScript》一文中瞭解有關 IntelliSense 的更多資訊。對於其他語言,請查閱擴充套件的文件。

© . This site is unofficial and not affiliated with Microsoft.