🚀 在 VS Code 中

2023 年 2 月 (版本 1.76)

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

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

下載:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


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

如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 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 鍵輸入。

新的 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

遠端工作區中的設定檔

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

以下兩個不同的設定檔 ("文件撰寫" 和 "程式碼") 在兩個 遠端 - 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 或 遠端通道的遠端機器,或 適用於 Linux 的 Windows 子系統 (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 桌面版搭配使用,以瀏覽包含 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 上預覽)

非同步語彙基元化

此版本隨附實驗性非同步語彙基元化功能。此功能可讓編輯器在個別的 Web Worker 中將文件語彙基元化,這可以提高文件很大時編輯器的回應能力。

目前,非同步語彙基元化預設為停用,但可以透過將 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 子句內容剖析中的即將變更

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

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

我們計劃在下一個穩定版本中更新至 Electron 22。這對利用原生模組的擴充功能產生影響,原因是啟用了 V8 記憶體隔離區:不再允許指向外部 ("堆外") 記憶體的 ArrayBuffers。這表示依賴 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 的 scheme。

QuickPickItems 的工具提示

在此次迭代中,我們為 QuickPickItems 引入了一個新的建議 API,即 tooltip 屬性。此屬性允許您為 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 追蹤

對我們的 Issue 追蹤的貢獻

Pull request

vscode 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

monaco-editor 的貢獻