語言擴充功能概觀

Visual Studio Code 透過「語言擴充功能」(Language Extensions)為不同的程式語言提供智慧編輯功能。VS Code 的核心編輯器並不內建語言支援,而是提供了一套 API 來實現豐富的語言功能。

例如,HTML 擴充功能使用這些 API 來顯示 HTML 檔案的語法突顯。同樣地,當您輸入 console. 而 IntelliSense 出現 log 時,這就是 Typescript Language Features 擴充功能在運作。

VS Code 將其中一些擴充功能與編輯器綑綁在一起,讓您從一開始就能享有豐富的語言支援。

語言功能大致可分為兩類

宣告式語言功能 (Declarative language features)

宣告式語言功能是在設定檔中定義的。例如隨 VS Code 綑綁的 htmlcsstypescript-basic 擴充功能,它們提供了以下部分宣告式語言功能:

  • 語法突顯 (Syntax highlighting)
  • 程式碼片段補全 (Snippet completion)
  • 括號配對
  • 括號自動關閉 (Bracket autoclosing)
  • 括號自動包覆 (Bracket autosurrounding)
  • 註解切換 (Comment toggling)
  • 自動縮排 (Auto indentation)
  • 程式碼摺疊 (Folding by markers)

我們提供了三份指南,用於撰寫支援「宣告式語言功能」的語言擴充功能。

  • 語法突顯指南:VS Code 使用 TextMate 文法來進行語法突顯。本指南將引導您撰寫簡單的 TextMate 文法,並將其轉換為 VS Code 擴充功能。
  • 程式碼片段補全指南:本指南說明如何將一組程式碼片段綑綁到擴充功能中。
  • 語言設定指南:VS Code 允許擴充功能為任何程式語言定義**語言設定**。此檔案可控制基本的編輯功能,例如註解切換、括號配對/包覆以及區域摺疊(舊版)。

程式化語言功能 (Programmatic language features)

程式化語言功能包含自動完成、錯誤檢查以及跳轉至定義。這些功能通常由「語言伺服器」(Language Server)驅動,這是一種分析專案以提供動態功能的程式。其中一個例子是 VS Code 內建的 typescript-language-features 擴充功能。它利用 TypeScript 語言服務 來提供以下程式化語言功能:

以下是程式化語言功能的完整列表。

multi-ls

語言伺服器通訊協定 (Language Server Protocol)

透過標準化語言伺服器(一種靜態程式碼分析工具)與語言用戶端(通常是原始碼編輯器)之間的通訊,語言伺服器協定 (Language Server Protocol) 讓擴充功能開發者能夠編寫一次程式碼分析程式,並在多個編輯器中重複使用。

程式化語言功能清單中,您可以找到所有 VS Code 語言功能的列表,以及它們如何對應到 語言伺服器協定規格

我們提供了一份深入指南,說明如何在 VS Code 中實作語言伺服器擴充功能。

multi-editor

特殊情況

多根工作區支援 (Multi-root workspace support)

當使用者開啟多根工作區時,您可能需要相應地調整語言伺服器擴充功能。本主題討論支援多根工作區的多種方法。

嵌入式語言 (Embedded languages)

嵌入式語言在網頁開發中很常見。例如 HTML 中的 CSS/JavaScript,以及 JavaScript/TypeScript 中的 GraphQL。嵌入式語言主題討論了如何讓語言功能在嵌入式語言中也能使用。

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