🚀 在 VS Code 中

2023 年 2 月 (版本 1.76)

更新 1.76.1:此更新解決了這些 問題

更新 1.76.2:此更新解決了這些 問題

下載:Windows: x64 Arm64 | Mac: 通用 Intel Silicon | Linux: deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2023 年 2 月發行版本。此版本有許多更新,我們希望您會喜歡,其中一些主要重點包括

如果您想在線上閱讀這些發行說明,請前往 Updates,網址為 code.visualstudio.com

Insiders: 想要盡快試用新功能嗎?您可以下載每夜建置的 Insiders 版本,並在最新更新可用時立即試用。

協助工具

終端機命令失敗音訊提示

當終端機中具有 Shell 整合功能的命令以非零代碼結束時,視力正常的使用者可以快速瀏覽命令裝飾,以了解發生了失敗。為了向螢幕閱讀器使用者傳達失敗訊息,VS Code 現在會播放 audioCues.terminalCommandFailed 音訊提示。

您可以捲動瀏覽 說明:列出音訊提示 下拉式選單,以聆聽可用的音訊提示聲音。

List Audio Cues dropdown with Terminal Command Failed cue selected

改進錯誤音訊提示的回應性

audioCues.lineHasError 音訊提示現在會在字元導覽期間播放,以便螢幕閱讀器使用者更深入了解編輯器中錯誤的位置。

終端機協助工具緩衝區改進

在上一個反覆運算中,我們推出了終端機協助工具緩衝區,讓螢幕閱讀器使用者可以透過 終端機:焦點協助工具緩衝區 命令存取終端機內容。

在此反覆運算中,我們改進了協助工具緩衝區,新增了選取和連結支援、使其成為唯讀,並使用 Shell 整合深入資訊將輸出限制為僅重要的終端機內容 - 執行的命令、結束代碼 (若有) 和輸出。我們計劃在下一個反覆運算中新增此功能的設定。

內容特定的 Tab 焦點模式

切換 Tab 鍵移動焦點 命令對於判斷工作台或編輯器/終端機是否接收 Tab 鍵輸入非常有用。

新的 editor.tabFocusMode 設定允許使用者設定預設行為。當值設定為 true 時,工作台會接收 Tab 鍵輸入,而不是編輯器或終端機。

Windows 上的螢幕閱讀器 Shell 整合支援

先前在 Windows 上偵測到螢幕閱讀器時,Shell 整合功能會停用,原因是在此內容中 PowerShell 支援存在問題。我們已確定在大多數情況下這不再是問題,因此已啟用它。

終端機協助工具說明新增功能

與螢幕閱讀器社群的討論產生了對 終端機協助工具說明 對話方塊 () 的新增功能,例如提及 建立新的終端機 (使用設定檔)喜好設定:開啟協助工具設定 命令。

設定檔

設定檔,在上一個里程碑發佈至穩定版,可讓您根據目前的工作流程和專案快速切換 VS Code 設定。您可以儲存一組自訂設定,例如設定、擴充功能和鍵盤快速鍵,在您的機器之間同步它們,並輕鬆地與同事共用。

設定檔徽章

VS Code 現在會透過在 管理 活動列圖示上顯示設定檔名稱的前兩個字母作為設定檔徽章,來指示目前的自訂設定檔。

Two profile badges showing the first two letters of the profiles

佈景主題可以透過設定兩個新的佈景主題色彩來自訂設定檔徽章背景和前景色彩

  • profileBadge.background
  • profileBadge.foreground

切換設定檔

您現在可以使用命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中的 設定檔:切換設定檔 命令,在設定檔之間快速切換,此命令會顯示一個下拉式選單,列出您可用的設定檔。

Switch Profile command dropdown listing available profiles

遠端工作區中的設定檔

您現在可以建立和自訂包含 遠端擴充功能 的設定檔,並在 遠端開發 工作區中切換它們。

以下兩個不同的設定檔 ("文件撰寫" 和 "程式碼") 在兩個 Remote - SSH 執行個體中處於活動狀態。

Profiles active in two Remote - SSH instances

設定檔文件

如果您想進一步了解設定檔以及它們在何種情況下有用,請查看新的 Visual Studio Code 中的設定檔 主題。本文詳細介紹如何建立、修改、共用和重複使用設定檔。

工作台

可移動的檔案總管檢視

VS Code 中的大多數檢視和檢視容器都是可移動的,除了少數內建檢視和檢視容器。在此版本中,檔案總管檢視容器 (⇧⌘E (Windows、Linux Ctrl+Shift+E)) 現在是可移動的,可以放置在次要側邊欄或底部面板中,以進一步自訂工作台。

以下檔案總管檢視已移動到面板區域。

File Explorer view moved to the panel area

如果您想要將所有檢視重設回預設配置,您可以從命令面板執行 檢視:重設檢視位置

固定寬度置中配置

檢視:切換置中配置 命令 (workbench.action.toggleCenteredLayout) 現在具有固定寬度配置選項。此選項透過新的 workbench.editor.centeredLayoutFixedWidth 設定啟用。啟用且置中配置處於活動狀態時,編輯器會置中,並嘗試在視窗和面板大小調整時保持其寬度。

多個快速差異

隨著建議的 多個快速差異 API 的推出,多個擴充功能可以提供快速差異。當檔案中有多個快速差異時,您現在會看到一個下拉式選單,可選擇要檢視哪個差異基準

Multiple quick diffs and diff base dropdown

註解

註解 檢視具有新的 全部展開 命令,以及現有的 全部摺疊 命令。未解決註解的裝訂區圖示現在與 註解 檢視中使用的圖示相同。

設定預設記錄層級

您現在可以從 開發人員:設定記錄層級... 命令設定 VS Code 或擴充功能的預設記錄層級。此設定會跨重新啟動持續存在,並跨機器同步。

Default log level dropdown with several extensions listed

選取擴充功能會顯示與預設記錄層級相同的記錄層級下拉式選單。

擴充功能編輯器中已驗證的發行者網域

擴充功能編輯器現在會在已驗證的指示器旁邊顯示已驗證的發行者網域。在下方,prettier.io 網域會顯示在已驗證徽章的右側。

Prettier extension in the extension editor displaying verified publisher domain prettier.io

編輯器

JSONC 文件排序

現在可以依金鑰排序 JSONC (具有註解的 JSON 文件) 檔案。若要使用此功能,請從命令面板選取 JSON:排序文件

用於比對和色彩化的獨立括號組

在此反覆運算中,我們變更了同時設定 editor.language.bracketseditor.language.colorizedBracketPairs 時的行為。在之前,設定 editor.language.colorizedBracketPairs 會覆寫 editor.language.brackets 以進行括號比對 (因為兩者都使用相同的 括號組樹狀結構)。現在,兩個設定的聯集用於括號比對,但只有在 editor.language.colorizedBracketPairs 中設定的括號才會被色彩化。

原始檔控制

Git 提交語法醒目提示

VS Code 採用了新的 Git 文法,為 Git 提交訊息檔案提供語法醒目提示。新的文法對非英文語言提供更佳的支援。

Git 和 GitHub 文件

無論您是原始檔控制新手還是經驗豐富的 Git 使用者,您都可以在我們文件的 原始檔控制 區段中深入了解 VS Code 的 Git 整合。文章包括

筆記本

核心選取器預設模式:MRU

核心選取器現在預設會顯示最近使用 (MRU) 的核心。這與先前的行為有所不同,先前的行為是顯示所有可用的核心。您仍然可以透過次要選取器 選取另一個核心... 來查看所有核心,當您安裝最新的 JupyterPython 擴充功能時,它會依來源 (例如:Jupyter 核心、Python 環境等) 對核心進行分組。

Notebook kernel picker with MRU list and using the Select Another Kernel option

筆記本轉譯器效能診斷

執行筆記本儲存格時,某些筆記本輸出轉譯器可能需要很長時間才能轉譯。為了協助識別這些轉譯器,我們在筆記本儲存格狀態列的浮動視窗中新增了診斷。此檢視會顯示每個轉譯器執行所花費的時間和總執行時間。此外,浮動視窗中的連結將會開啟問題報告程式,其中預先填入轉譯器的名稱和執行時間,以便您在發現轉譯器執行時間過長時可以輕鬆地提交問題。

Image showing the cell Status bar hover with renderer execution times

內建錯誤轉譯器現在支援連結到檔案和行號。這可讓您按一下錯誤訊息中的檔案路徑,並在編輯器中開啟檔案。

Jupyter 擴充功能的錯誤轉譯器已被取代,改用內建錯誤轉譯器。

Notebook built-in error renderer

語言

需要連結到另一個 Markdown 文件中的標頭,但不記得或不想輸入完整檔案路徑?試試看使用工作區標頭完成建議!若要開始,只需在 Markdown 連結中輸入 ##,即可查看目前工作區中所有 Markdown 標頭的清單

Suggestions for all Markdown headers in the current workspace

接受其中一個完成建議,以插入該標頭的完整連結,即使它在另一個檔案中

Adding a link to the selected header in another file

您可以使用 Markdown > 建議 > 路徑:包含工作區標頭完成建議 設定 (markdown.suggest.paths.includeWorkspaceHeaderCompletions) 來設定工作區標頭完成建議的顯示時機/方式。

有效設定值為

  • onDoubleHash (預設) - 僅在您輸入 ## 後才顯示工作區標頭完成建議。
  • onSingleOrDoubleHash - 在您輸入 ### 後顯示工作區標頭完成建議。
  • never - 永遠不顯示工作區標頭完成建議。

請記住,尋找目前工作區中的所有標頭可能很耗費資源,因此第一次要求時可能會稍有延遲,特別是對於具有大量 Markdown 檔案的工作區。

新的 markdown.preferredMdPathExtensionStyle 設定會設定 VS Code 是否偏好對 Markdown 檔案的連結使用檔案擴充名。此偏好設定用於語言工具,例如 路徑完成建議連結重新命名

有效設定值為

  • auto - 嘗試保留檔案擴充名的現有樣式。
  • includeExtension - 在連結中包含尾碼 .md
  • removeExtension - 從連結中移除尾碼 .md

遠端開發

遠端開發擴充功能 可讓您使用 開發容器、透過 SSH 或 遠端通道 的遠端機器,或 Windows Subsystem for Linux (WSL) 作為全功能開發環境。

您可以在 遠端開發發行說明 中了解新的擴充功能功能和錯誤修正。

遠端選單

在此里程碑中,我們對遠端選單進行了數項可用性改進,可透過按一下狀態列左下角的遠端指示器來存取

  1. 現在有一個預設鍵盤快速鍵可開啟遠端選單:⌥⌘O (Windows、Linux Ctrl+Alt+O)

  2. 我們減少了遠端擴充功能對遠端選單的貢獻,以便輕鬆一目了然地查看所有連線到遠端視窗的動作。

    • 開啟遠端視窗的基本動作現在始終在遠端選單中可用,因此即使您已經在遠端視窗中,也可以探索連線到另一個遠端的動作。
    • 用於設定或開始使用遠端的大多數動作已從遠端選單移至命令面板,以節省遠端選單中的空間。
  3. 遠端選單中的 安裝其他遠端擴充功能 選項現在指向精選的遠端開發擴充功能清單,如果已安裝所有此類擴充功能,則會從遠端選單中隱藏。

遠端儲存機制

在此里程碑中,我們在 遠端儲存機制 擴充功能中推出了 瀏覽和編輯遠端儲存機制,無需複製 逐步解說,以協助您在 GitHub 和 Azure Repos 中搜尋、編輯和建立快速提交,而無需在本機複製。

您也可以查看 遠端儲存機制教學課程,以協助您入門。

適用於 Web 的 VS Code

在此里程碑中,我們新增了對 vscode.dev 上 GitHub 和 Azure Repos 儲存機制中託管的 Git LFS 追蹤檔案的實驗性唯讀支援。

在下面的短片中,當在 vscode.dev 上捲動 Markdown 預覽時,儲存在 vscode-docs 儲存機制中 Git LFS 上的影像會顯示出來。

當您在 GitHub 或 Azure Repos 儲存機制中檢視檔案時,根據您的 .gitattributes 設定,我們會偵測檔案是否為 LFS 追蹤檔案,以及是否需要從 GitHub 或 Azure Repos 的 LFS 伺服器擷取。

您也可以將 GitHub 儲存機制Azure Repos 擴充功能與 VS Code Desktop 搭配使用,以瀏覽包含 Git LFS 追蹤檔案的儲存機制,而無需複製。

可以使用下列設定停用此行為

  • "githubRepositories.experimental.lfs.read.enabled": false
  • "azureRepos.experimental.lfs.read.enabled": false

VS Code 尚不支援提交 Git LFS 追蹤檔案,且 github.dev 沒有 Git LFS 讀取支援。

擴充功能

改進的擴充功能搜尋相關性

我們改進了 擴充功能檢視Marketplace 庫中擴充功能搜尋結果的相關性。結果現在應該更適當,尤其是針對多字詞查詢。

之前 之後
Search results for "mono debugger" showing Java debugger extension as the top result Search results for "mono debugger" showing Mono debug extension as the top result

對擴充功能的貢獻

Jupyter

IPyWidgets

Jupyter 擴充功能現在支援 IPyWidgets 的版本 8。依賴 IPyWidgets 7.* 的 Python Widget 將繼續運作,因為同時支援版本 7.*8.*

互動式視窗核心選取

修改了 互動式視窗 自動選取核心的功能,以更好地與新的核心選取器 UI 搭配使用。除非先前已在該工作區中為互動式視窗選取另一個核心,否則會使用目前的作用中解譯器,在這種情況下,會使用先前選取的核心。

Python

改進的 pytest IntelliSense 支援

Pylance 擴充功能現在具有強大的功能,可協助您在使用 pytest 撰寫清晰、簡潔且易於理解的測試時,更有效率且有效地工作

  • 支援針對 pytest 夾具和參數化引數的完成建議、跳到定義尋找所有參考重新命名符號 (F2)。
  • 透過嵌入提示 (透過 "python.analysis.inlayHints.pytestParameters" 設定啟用) 和透過程式碼動作,支援 pytest 參數的類型註解。
  • 根據提供給裝飾項的參數值,推斷參數化 pytest 引數的類型。

下面的短片重點介紹了這些新的 pytest 功能

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能已取得更多進展,可讓您處理、建立和管理提取要求和問題。重點包括

  • 在 PR 描述和註解中轉譯永久連結。
  • 從描述頁面重新要求審閱。
  • 已簽出 PR 中檔案的快速差異。

查看擴充功能 0.60.0 版本的變更記錄,以查看其他重點。

預覽功能

全域搜尋現在支援從筆記本顯示結果,因為它們將顯示在筆記本編輯器中。啟用 search.experimental.notebookSearch 以試用此功能,並讓我們知道您遇到的任何錯誤!目前僅支援搜尋儲存格中的儲存格輸入和 Markdown 來源。

佈景主題:Community Material Theme (在 vscode.dev 上預覽)

非同步 Token 化

此版本隨附實驗性非同步 Token 化功能。此功能允許編輯器在個別的 Web Worker 中 Token 化文件,這可以提高文件很大時編輯器的回應性。

目前,非同步 Token 化預設為停用,但可以透過將 editor.experimental.asyncTokenization 設定為 true 來啟用。

TypeScript 5.0 支援

此更新包含對即將推出的 TypeScript 5.0 版本的支援。請參閱 TypeScript 5.0 Beta 部落格文章TypeScript 5.0 反覆運算計畫,以取得有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊。一些編輯器工具重點

  • 新的 switchcase 完成建議可協助您更快速地填寫 switch 陳述式的兩個區段。
  • 致力於在 github.devvscode.dev 上啟用專案範圍的 IntelliSense。

若要開始使用 TypeScript 5.0 每夜建置版本,請安裝 TypeScript Nightly 擴充功能,或安裝最新的 VS Code 1.76+ Insiders 建置版本

擴充功能撰寫

在此反覆運算中,我們推出了對 InputBox 提示和驗證訊息中連結的支援。在這些字串中,您現在可以使用下列語法來建立連結

[link text](link target)

連結目標可以是 URL 或命令 ID。當使用者按一下連結時,連結目標會在瀏覽器中開啟,或分別作為命令執行。

範例

const result = await vscode.window.showInputBox({
  prompt:
    'Please enter a valid email address [more info](https://aka.ms/vscode-email-validation)',
  validateInput: text => {
    if (text.indexOf('@') === -1) {
      return 'Please enter a valid email address, [more info](https://aka.ms/vscode-email-validation)';
    }
    return undefined;
  }
});

這將產生以下提示

Prompt contains a link that is underlined

以及以下驗證訊息

Validation message contains a link that is underlined

佈景主題:Panda Theme (在 vscode.dev 上預覽)

此行為適用於 showInputBoxcreateInputBox API。

針對 * 啟動事件的資訊診斷

當擴充功能使用 * (星號) 啟動事件時,它會在 VS Code 啟動過程中啟動。這可能會延遲 VS Code 的啟動。為了協助擴充功能作者了解使用 * 啟動事件的影響,我們新增了一個資訊診斷,當擴充功能使用 * 啟動事件時會顯示該診斷。診斷會顯示在 [問題] 檢視中,也會顯示在擴充功能編輯器中

Diagnostic for * activation event

如需有關 * (星號) 啟動的詳細資訊,您可以閱讀 啟動事件 文件。

即將變更 when 子句內容剖析

When 子句 用於擴充功能資訊清單檔案 (package.json) 中,可讓擴充功能選擇性地啟用和停用貢獻,例如命令和 UI 元素 (例如,選單或檢視)。下一個 VS Code 版本計劃包含用於 when 子句的新剖析器。新的剖析器提供更多功能和正確性,但它也對 when 子句強制執行更嚴格的規則,並且可能會導致現有 when 子句的一些中斷。檢閱 問題 #175540 以深入了解中斷和新功能。也鼓勵您訂閱該問題,以取得有關新剖析器的更新,包括新功能、中斷和移轉指南。

即將推出的 Electron 更新可能需要強制變更原生模組

我們計劃在下一個穩定版本中更新至 Electron 22。這會對利用原生模組的擴充功能產生影響,原因是啟用了 V8 記憶體隔離:不再允許指向外部 ("堆外") 記憶體的 ArrayBuffer。這表示依賴 V8 中此功能的原生模組需要重構,才能繼續在 VS Code 1.77 及更高版本中運作。

請遵循 Electron 部落格文章 中的建議,了解如何讓您的原生模組與未來版本的 VS Code 搭配使用。

語言伺服器協定

已發行新版本的 語言伺服器協定 (LSP) 用戶端 (8.1.0) 和伺服器 (8.1.0) npm 套件。這些是錯誤修正版本 (主要解決使用完整文字文件同步時的請求順序問題),並包含 JSON-RPC 程式庫的自訂訊息處理 API 新增功能。

建議的 API

每個里程碑都隨附新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟

  1. 尋找您想要試用的建議,並將其名稱新增至 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 並執行 vscode-dts dev。它會將對應的 d.ts 檔案下載到您的工作區中。
  3. 您現在可以針對建議進行程式設計。

您不能發布使用提議 API 的擴充功能。在下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。

OpenDialogOptions allowUIResources

當擴充功能感知到它們在遠端擴充功能主機中執行時,可以使用 allowUIResources,以使「顯示本機」按鈕顯示在開啟檔案對話方塊中。使用 allowUIResources 的擴充功能應始終檢查傳回的 URI 的協定。

QuickPickItems 的工具提示

在此迭代中,我們正在為 QuickPickItem 上的 tooltip 屬性引入一個新的提議 API。此屬性允許您為 Quick Pick 中的每個項目指定工具提示。當使用者將滑鼠懸停在項目上時,或可以使用 Ctrl+Space 切換工具提示的顯示。

範例

await vscode.window.showQuickPick(
  [
    {
      label: 'label',
      tooltip: 'tooltip'
    },
    {
      label: 'label2',
      tooltip: new vscode.MarkdownString('tooltip2 [link](https://github.com)')
    }
  ],
  {
    placeHolder: 'placeholder'
  }
);

這將產生以下 Quick Pick

佈景主題:Panda Theme (在 vscode.dev 上預覽)

顯然,這是一個不需要工具提示的簡單範例。當您想要提供可能有多行或連結到其他資源的長描述時,工具提示非常有用。

我們認為此屬性是對 Quick Pick API 的良好補充,並且我們期待您的回饋。

工程

更多 Electron UtilityProcess 的採用

作為我們的 程序沙箱旅程 的一部分,我們希望確保我們的應用程式中不再有啟用 Node.js 的瀏覽器視窗。在這個里程碑中,我們開始將最後一個剩餘的程序從隱藏的 Node.js 瀏覽器視窗轉換為 Electron UtilityProcess。作為這項工作的一部分,檔案監看器程序也必須移出到它自己的 utility process 中。

新的設定 window.experimental.sharedProcessUseUtilityProcess 啟用了 UtilityProcess 的使用,我們計劃在下一個版本中將其設為預設值。

macOS 10.11 和 10.12 支援已終止

正如在我們的 1.75 版本說明 中提到的,1.76 是最後一個支援 macOS 10.11 (OS X El Capitan) 和 10.12 (macOS Sierra) 的版本。有關更多資訊,請參閱我們的 FAQ

值得注意的修正

  • 168939 持續保存跨重新載入和視圖移動的徽章隱藏狀態。
  • 164397 RTL macOS 中版面配置控制項位置錯誤。

感謝您

最後但同樣重要的是,非常感謝 VS Code 的貢獻者。

Issue tracking

對我們的 issue tracking 的貢獻

Pull requests

vscode 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

monaco-editor 的貢獻