🚀 在 VS Code 中

2021 年 8 月 (版本 1.60)

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

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

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


歡迎使用 Visual Studio Code 2021 年 8 月發行版本。此版本包含許多我們希望您會喜歡的更新,其中一些重點包括:

如果您想在線上閱讀這些版本資訊,請前往 Updates,網址為 code.visualstudio.com

加入我們的直播,在 9 月 2 日星期四太平洋時間上午 8 點(倫敦下午 4 點)觀看 VS Code 團隊的直播,以觀看此版本新功能的示範,並現場向我們提問。

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

工作台

自動語言偵測

在上一個版本中,我們針對未命名的檔案推出了一項實驗性功能,該功能會根據內容自動設定檔案的語言模式。自動語言偵測功能使用機器學習來猜測語言,而機器學習模型完全在本機電腦上執行。該模型由開放原始碼 ML 程式庫 Tensorflow.js 和來自 GitHub 使用者 @yoeoGuesslang 的 ML 模型提供支援。

在此版本中,我們預設啟用自動語言偵測,並將偵測範圍擴展到包含沒有副檔名的檔案。在筆記本中,我們提供了一種使用語言選取器輕鬆要求語言偵測的方法。

我們新增此功能的原因是,我們發現一些 VS Code 新使用者不知道如何設定語言模式,也不知道為了獲得 VS Code 的豐富功能集(語言著色和擴充功能建議)而需要這樣做。讓新使用者能夠快速看到 VS Code 可用的語言功能和擴充功能,有助於他們快速上手編輯器。

此外,將未命名的文字編輯器用作草稿紙的進階使用者不再需要明確設定語言模式,我們希望這能簡化他們的工作流程。

以下是自動語言偵測啟用的幾個有趣情境。

從線上抓取範例並將其貼到未命名的編輯器中

佈景主題:Panda Theme

「Pipe into code」語言偵測(展示擴充功能較少的檔案的偵測)

佈景主題:Panda Theme

筆記本語言選取器中的自動偵測選項

佈景主題:Panda Theme

終端機編輯器確認對話方塊

現在,關閉具有執行中子處理序的終端機編輯器時顯示的對話方塊是針對終端機編輯器特定的,並且不再提供「儲存」終端機的方式。

Terminal editor confirmation dialog

保持編輯器開啟,而不是在還原失敗時關閉

先前,當編輯器在重新載入視窗或重新啟動應用程式後還原失敗時,編輯器會自動關閉,直到找到成功載入的編輯器。這種行為導致令人沮喪的結果,因為精心建立的編輯器版面配置會因為編輯器關閉而消失。

在此版本中,即使先前成功開啟的編輯器還原失敗,也不會關閉。編輯器會指出問題並提供重試操作的選項

Keep editors open and offer to Try Again

設定編輯器中程式碼區塊的語法醒目提示

設定描述中的圍籬程式碼區塊現在會語法醒目提示

Syntax highlighting of TypeScript code in the Settings editor

在側邊開啟設定編輯器

現在可以透過使用 openToSide 引數設定按鍵繫結,在側邊群組中開啟設定編輯器。

{
  "key": "cmd+,",
  "command": "workbench.action.openSettings",
  "args": {
    "openToSide": true
  }
}

這也適用於 workbench.action.openSettingsJson 命令。

編輯器

高效能括號配對著色

編輯器現在支援原生括號配對著色

Side by side comparison with bracket pair colorization on and off

可以透過設定 "editor.bracketPairColorization.enabled": true 來啟用括號配對著色。所有色彩都是可佈景主題化的,最多可以設定六種色彩。

我們實作此功能是為了解決著名的 Bracket Pair Colorizer 擴充功能(由 CoenraadS 開發)的效能問題。

現在,即使在大型文件中進行變更也會立即反映出來

自動完成中的內嵌建議

當顯示自動完成小工具時,內嵌建議現在可以擴展建議預覽。如果自動完成小工具中選取的建議可以由內嵌完成提供者擴展,則擴充功能會以斜體顯示。按一下 Tab 鍵仍然只會接受自動完成建議。再次按下 Tab 鍵將會接受內嵌建議。

此功能需要啟用建議預覽 ("editor.suggest.preview": true)。

已更新的「查看定義」檢視

我們已為「查看定義」檢視提供視覺更新,使其與其他編輯器檢視對齊

Peek view for informational items

Peek view for warning items

Peek view for error items

Peek view for References view

終端機

自訂彩現方塊繪製和區塊元素字元

當 GPU 加速開啟時 (terminal.integrated.gpuAcceleration),方塊繪製和區塊元素字元現在使用像素完美的自訂字元圖像,而不是使用字型。這表示,例如,即使您在終端機中設定行高或字母間距,方塊也會在沒有間隙的情況下繪製。

Terminal glyph rendering before with gaps Terminal glyph rendering after without gaps

以下是終端機應用程式 Zenith 的範例,該範例顯示區段周圍的方塊繪製字元以及圖表的區塊元素

Terminal rendering box characters and block elements

可以透過設定 "terminal.integrated.customGlyphs": false 來停用此功能。

改善某些字型的底線彩現

終端機中底線的彩現方式存在一些歷史問題,其中大部分問題已透過切換至 WebGL 彩現器(預設)來修正。但仍有一個例外,即字型中的底線字元在 Linux 上意外地繪製在儲存格邊界下方。

請注意下排的底線是如何繪製在儲存格下方

The underscore was previously rendered 1 pixel below the cell's bounds

雖然這在大多數情況下都運作良好,但在底排上會失敗,因為它繪製在畫布邊界之外。

我們現在透過偵測此類字型並將底線紋理向上移動直到它在儲存格邊界內來解決此問題。此解決方案也適用於畫布彩現器,該彩現器先前不會顯示任何列的底線,因為它會裁剪列以避免重疊。

The underscore is now at the bottom of the cell's bounds

重新載入視窗後更快速地重新連線

先前,重新載入視窗時,可能需要長達 300 毫秒才能剖析終端機緩衝區的狀態,並且也可能發生損毀。對於多個忙碌的終端機,這可能會很快累積起來!為了修正此問題,還原緩衝區的方法已從記錄 pty 主機上大量最近的原始終端機事件變更為在 pty 主機上維護無周邊終端機前端並將所有資料寫入其中。

此方法帶來多項優點

  • 可以微調要還原的回溯量。預設值現在為 100,這是速度和資料量之間的良好平衡。可以使用 terminal.integrated.persistentSessionScrollback 設定來變更回溯量。
  • 感謝 xterm.js 的快速剖析器,這應該對 CPU 使用率產生最小的影響,並減少 pty 主機上的整體記憶體使用量。
  • 現在會明確還原終端機模式,這可能會在之前遺漏並導致緩衝區損毀。
  • 不再需要重播成本高昂的調整大小事件,因為終端機的緩衝區始終與其大小同步。
  • 由於還原速度相對較快,因此所有還原都在單一框架中處理。這表示寶貴的 CPU 時間不會浪費在彩現部分還原的終端機和進一步減慢速度上。

此新實作提供的加速量取決於許多因素,例如終端機數量、硬體、終端機緩衝區大小以及終端機中發生的情況。還原完整終端機緩衝區的粗略估計應產生大約 5-10 倍的加速。

我們也在 npm 上發佈了新的 xterm-headless 套件,因此您可以在自己的專案中使用此工作。

偵錯

在監看式檢視中設定值

現在可以使用內容功能表中的設定值動作,在監看式檢視中設定監看式運算式的值。

Shows WATCH view with the Set Value action selected in the context menu

偵錯擴充功能必須選擇加入此功能,才能使用設定值。目前,JS-debug、C# 和 C++ 擴充功能支援此功能,但我們預期其他偵錯擴充功能也會很快跟進。

次要 UI 改善

  • VS Code 現在也會在變數檢視、監看式檢視和偵錯暫留中偵測值的連結。當變數的值是連結時,這將使其更容易透過按一下連結來追蹤該連結。

  • 當啟動另一個已在執行的偵錯工作階段執行個體時,現在有一個強制回應確認對話方塊,以防止意外啟動兩個工作階段。

  • 現在,按一下編輯器中中斷點邊界上的已停用中斷點會啟用中斷點,而不是移除它。

  • 當偵錯工作階段處於作用中狀態時,執行到行動作現在可在編輯器的中斷點邊界內容功能表中使用

新設定

  • 如果您想要避免在偵錯工作階段期間意外關閉視窗,您可以啟用新設定 debug.confirmOnExit。將此設定為 always 時,當您關閉視窗時,系統會提示您確認是否要停止偵錯工作階段。

    Confirm quit while debugging

  • 新的設定 debug.console.acceptSuggestionOnEnter 控制是否應在偵錯主控台中接受 Enter 上的建議。Enter 也用於評估在偵錯主控台中輸入的任何內容,因此此選項讓使用者可以更好地控制按下 Enter 時發生的情況。

JavaScript 偵錯

舊版節點偵錯工具已移除

VS Code 長期以來一直包含內建的 Node.js 偵錯工具,並發佈了個別的 Chrome 偵錯工具。去年,我們針對 Node.js 和 Chrome 推出了一個新的偵錯工具,自 VS Code 1.47 (2020 年 7 月) 以來,它已成為預設值,並具有「選擇退出」選項。

在此版本中,舊版偵錯工具已從產品中移除,並在 Marketplace 上標示為已淘汰。如果您是未選擇退出新的 JavaScript 偵錯工具的絕大多數 VS Code 使用者之一,則對您而言不會有任何變更。

如果您需要舊版偵錯工具(例如,偵錯 Node.js 6 程式),您可以安裝 [已淘汰] Node Debug[已淘汰] Debugger for Chrome 擴充功能,並分別使用 legacy-nodelegacy-chrome 啟動類型。

改善非同步函式和 Node.js 內部元件中的逐步執行

您可以設定偵錯工具的 skipFiles 以避免逐步執行特定程式碼,包括 Node.js 內部元件,這通常在逐步執行非同步函式時會遇到。

但是,Node.js 在處理 「黑箱」 指令碼時並不總是表現出正確的行為,因此在這次反覆運算中,我們在偵錯工具中引入了「合成黑箱」。這應顯著提高處理 Node.js 程式時的可靠性,尤其是在逐步執行非同步函式時。

在我們的下一個版本中,我們計劃預設讓偵錯工具跳過 Node.js 內部元件。

安裝程式

預設註冊 VS Code 以支援的檔案類型

Windows 11 引入了 新的檔案總管內容功能表,該功能表將開啟方式放在功能表頂端,並與開啟分組。此更新讓尋找所有可用的編輯器和變更預設值變得更容易。

遵循新的最佳做法,VS Code 的核取方塊將 VS Code 註冊為相關聯檔案類型的編輯器現在將在 Windows 安裝期間預設核取。我們也檢閱了相關聯檔案類型的清單,並將其擴展以包含更多經常開啟的檔案類型。

Windows 11 上的 Microsoft Store

隨著即將推出的 Windows 11,新的 Microsoft Store 可以支援更多傳統應用程式類型和安裝程式。如果您已經透過 Windows 測試人員計畫測試 Windows 11,您現在可以透過在商店中搜尋 VS Code 來安裝最新版本的 VS Code。安裝完成後,您將擁有與從我們的網站以使用者安裝方式提供的 VS Code 相同的版本,並且更新將在應用程式內處理,就像今天一樣。

筆記本

筆記本現在支援 Markdown 儲存格之間的連結

您可以使用下列方式建立 Markdown 儲存格中標題的連結

[Link text](#_header-slug)

header-slug 是標題的小寫文字,其中任何空格或特殊字元都會替換為 -。上方範例中的連結將會前往標題 # Header Slug

處理大型輸出時的效能改善

我們已最佳化我們在筆記本中處理大型輸出的方式,以顯著提高效能。

在幕後,VS Code 使用 Uint8Arrays 將筆記本輸出儲存為二進位資料。先前,在擴充功能主機處理序和彩現器處理序之間傳輸輸出資料時,資料會先轉換為數字值陣列,然後序列化為 JSON。

若要了解為何這對效能不利,請考慮輸出文字的筆記本:Hello Code!。這會在內部儲存為 Uint8Array

new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);

該資料長度為 11 個位元組。舊的實作方式接著會將二進位資料轉換為 JSON 字串

'[72,101,108,108,111,32,67,111,100,101,33]';

此字串長度為 41 個位元組,是原始資料大小的 3.5 倍以上!這是要傳輸的額外位元組,而接收者現在必須將該字串剖析為 JSON,以將其轉換回 Uint8Array。對於大小為數十 MB 的筆記本輸出,此剖析可能會成為嚴重的瓶頸。

使用新的實作方式,筆記本輸出在傳輸時會保持為二進位資料。您可以在 提取要求中閱讀有關如何實作此功能的詳細資訊。

此修正顯著改善了載入儲存大型輸出的筆記本,以及改善筆記本在執行期間產生大型輸出時的效能。

onNotebook 啟動事件改善

當筆記本在工作區中開啟時,VS Code 將發出 onNotebook:{type}onNotebook:* 事件,以便筆記本擴充功能可以在接聽這些事件時啟動。先前,VS Code 會等待接聽這兩個事件的所有擴充功能,然後再開啟檔案,但現在它只會等待特定筆記本的序列化程式註冊。例如,當使用者在新的工作區中開啟 ipynb 檔案時,內建的 ipynb 序列化程式擴充功能將會啟動,並且檔案會立即開啟。同時,VS Code 會向所有其他擴充功能(例如,Jupyter、.NET Interactive 或 Julia 擴充功能)發出啟動事件。其他擴充功能的啟動不會減慢檔案操作速度,以確保快速開啟筆記本。

筆記本版面配置自訂

您現在可以直接透過編輯器工具列自訂筆記本版面配置設定。

Notebook layout customization actions available in the editor toolbar

語言功能

TypeScript 4.4

VS Code 現在包含 TypeScript 4.4。此更新帶來對許多新語言功能和改善的支援,包括 靜態區塊新的嚴格性選項。它也新增了新的工具改善並修正了一些重要的錯誤。

您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.4 的所有資訊。

JavaScript 和 TypeScript 的內嵌提示

TypeScript 4.4 中最重要的新工具功能是內嵌提示支援。內嵌提示會將其他內嵌資訊新增至原始碼,以協助您了解程式碼的作用。

例如,參數名稱內嵌提示會顯示函式呼叫中參數的名稱

Parameter name inlay hints

這可以協助您一目了然地了解每個引數的意義,這對於採用布林值旗標或具有容易混淆的參數的函式特別有用。

若要啟用參數名稱提示,請設定 javascript.inlayHints.parameterNames.enabledtypescript.inlayHints.parameterNames.enabled 設定。有三個可能的值

  • none - 停用參數內嵌提示。
  • literals - 僅顯示常值 (字串、數字、布林值) 的內嵌提示。
  • all - 顯示所有引數的內嵌提示。

此外,VS Code 也提供內嵌提示,以顯示 JavaScript 和 TypeScript 程式碼中的隱含類型資訊。

變數類型內嵌提示會顯示沒有明確類型註解的變數類型。

設定 - javascript.inlayHints.variableTypes.enabledtypescript.inlayHints.variableTypes.enabled

Variable type inlay hints

屬性類型內嵌提示會顯示沒有明確類型註解的類別屬性類型。

設定 - javascript.inlayHints.propertyDeclarationTypes.enabledtypescript.inlayHints.propertyDeclarationTypes.enabled

Property type inlay hints

參數類型提示會顯示隱含類型參數的類型。

設定 - javascript.inlayHints.parameterTypes.enabledtypescript.inlayHints.parameterTypes.enabled

Parameter type inlay hints

傳回類型內嵌提示會顯示沒有明確類型註解的函式傳回類型。

設定 - javascript.inlayHints.functionLikeReturnTypes.enabledtypescript.inlayHints.functionLikeReturnTypes.enabled

Return type inlay hints

我們計劃繼續改進內嵌提示,因此請務必分享您對新功能的任何意見反應

JavaScript 檔案中的拼字建議

VS Code 現在可協助您在 JavaScript 檔案中捕捉簡單的拼字錯誤

Spelling suggestions in a plain JS files

只有在高度確信它們是實際錯誤,而不僅僅是我們的 IntelliSense 引擎無法理解的程式碼模式時,才會顯示拼字建議。您可以在新增此功能的 PR 中閱讀有關此功能的詳細資訊。

您也可以透過設定停用這些建議

"javascript.suggestionActions.enabled": false

如需更全面的檢查,請嘗試在您的 JavaScript 程式碼中啟用完整語意檢查。這不僅可以協助捕捉更多錯誤,還可以啟用多個有用的快速修正。

typescript.tsserver.useSyntaxServer

新的 typescript.tsserver.useSyntaxServer 設定可讓您控制 TypeScript 是否啟動專用伺服器來快速處理語法相關操作,例如計算程式碼摺疊。它取代了現在已淘汰的 typescript.tsserver.useSeparateSyntaxServer 設定。

可能的值為

  • auto - 產生完整伺服器和專用於語法操作的輕量型伺服器。語法伺服器用於加速語法操作,例如程式碼摺疊,並在專案載入時提供 IntelliSense。(預設)
  • always - 使用輕量型語法伺服器來處理所有 IntelliSense 操作。此語法伺服器只能為已開啟的檔案提供 IntelliSense。
  • never - 不使用專用語法伺服器。使用單一伺服器來處理所有 IntelliSense 操作。

預覽功能

鎖定的編輯器群組

隨著編輯器區域中的終端機的引入,我們收到使用者的報告,他們對終端機編輯器太容易或意外地被檔案編輯器取代感到沮喪。依預設,檔案將始終在作用中的編輯器群組中開啟,因此,即使終端機處於作用中狀態,檔案也會開啟並隱藏終端機。

鎖定的編輯器群組為解決此問題提供了一種新方法,不僅適用於終端機,也適用於任何編輯器。如果您開啟了多個編輯器群組,您現在可以鎖定它,無論是使用新的命令之一還是從 "..." 溢位功能表中鎖定。

Lock Group action on the editor context menu

鎖定的群組與未鎖定的群組的行為不同

  • 除非使用者明確移動到鎖定的群組(例如,透過拖放),否則新的編輯器不會在鎖定的群組中開啟。
  • 如果編輯器略過鎖定的群組以開啟,則它將在最近使用的未鎖定群組中開啟,或在鎖定的群組旁邊建立一個新群組。
  • 編輯器群組的鎖定狀態會持續存在,並在重新啟動後還原。
  • 您可以鎖定空的群組,以實現更穩定的編輯器版面配置。
  • 鎖定的群組由動作工具列(右上角)中的鎖定圖示指示。

Locked editor group layout with lock icon

請參閱以下示範,了解鎖定的編輯器群組在動作中的行為。即使 Markdown 預覽處於作用中狀態,新檔案也會在左側編輯器群組中開啟

為此功能新增的命令為

  • workbench.action.experimentalLockEditorGroup
  • workbench.action.experimentalUnlockEditorGroup
  • workbench.action.experimentalToggleEditorGroupLock

新的內容金鑰 activeEditorGroupLocked 可用於根據群組的鎖定狀態有條件地繫結命令。

注意:相關聯的設定和命令是實驗性的,直到我們完成鎖定編輯器群組的設計為止。我們希望您對此新功能提供意見反應,因此請隨時報告問題

自動鎖定編輯器群組

在新的鎖定編輯器群組概念的基礎上,新的 workbench.editor.experimentalAutoLockGroups 設定可讓您選取應在開啟時自動鎖定群組的編輯器。這僅適用於當編輯器是第一個在其他方面為空或新的群組中開啟的編輯器時。

終端機預設設定為導致新群組自動鎖定。在下面的短片中,即使終端機處於作用中狀態,從終端機選取的檔案也會在左側編輯器群組中開啟

如果您希望 Markdown 預覽自動鎖定群組,您可以將 mainThreadWebview-markdown.preview: true 新增至 experimentalAutoLockGroups 設定。

在下一個里程碑中,我們將致力於改善設定 UX,以便能夠選取編輯器,而無需知道其識別碼。相關聯的設定和命令是實驗性的,直到我們完成鎖定編輯器群組的設計為止。我們再次希望您提供意見反應

「依檔案名稱搜尋」快速選取中的引號支援

在此反覆運算中,我們新增了透過將搜尋字串放在引號中,從「依檔案名稱搜尋」快速選取 (⌘P (Windows、Linux Ctrl+P)) 中排除模糊搜尋結果的功能。

此功能發光發熱的情境

當查詢只有幾個字元時

如果您想要減少結果的「雜亂」

我們喜歡這種引號體驗,並且感覺很直覺,因為大多數搜尋引擎都使用類似的機制,但我們希望您提供意見反應。我們也在考慮 問題 #131431 中討論的其他方法。

擴充功能貢獻

Jupyter

逐行執行

VS Code 現在支援 Jupyter 筆記本中的逐行執行功能。這是一種簡單的偵錯模式,可讓您逐行執行儲存格的程式碼。若要試用,請確保您已安裝 ipykernel v6+ 作為選取的核心,然後選取逐行執行按鈕。

偵錯

也提供使用 VS Code 的完整偵錯功能偵錯 Jupyter 筆記本的實驗性支援。若要試用,請確保您已安裝 ipykernel v6+ 作為選取的核心,設定 "jupyter.experimental.debugging": true,設定中斷點,然後選取偵錯儲存格命令。

Jupyter 按鍵對應

我們將 Jupyter 傳統按鍵繫結提取到個別的 Jupyter Keymap 擴充功能,如果您偏好使用 Marketplace 中的另一組 筆記本按鍵繫結,您可以停用它。

Python

已修改的測試介面

感謝新的測試 APIPython 擴充功能已修改其測試功能。您現在可以享受更穩定的測試探索、導覽和狀態彩現體驗,以及搜尋測試、執行選取的測試、重新執行上次執行的測試等等新功能!

Running tests with the new Python Test Explorer

從編輯器在終端機中執行和偵錯 Python 檔案

您現在可以使用 Python 擴充功能,直接從編輯器在終端機中執行和偵錯您的 Python 檔案。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能中展開和摺疊所有註解的備受要求功能現在已推出。所有註解都可以透過命令 GitHub Pull Requests: 展開所有註解GitHub Pull Requests: 摺疊所有註解來展開和摺疊。還有一個設定 githubPullRequests.commentExpandState 可控制展開摺疊狀態。最後,您也可以從註解 UI 內摺疊所有註解

Collapse all pull request comments button

若要了解所有新功能和更新,您可以查看擴充功能 0.30.0 版本的完整變更記錄

擴充功能撰寫

Web 擴充功能

當 VS Code 在瀏覽器中執行時,擴充功能會載入到也在瀏覽器中執行的擴充功能主機中。「Web 擴充功能主機」受瀏覽器限制,擴充功能無法存取本機檔案系統或平台功能。為了協助擴充功能作者更新其擴充功能以支援在 Web 版 VS Code 中執行,現在有一個 Web 擴充功能撰寫指南。在這裡,您將了解哪些類型的擴充功能在 Web 上運作最佳、如何存取 VS Code API 以及如何使用虛擬檔案系統。

除了 Web 擴充功能指南外,yo code 擴充功能產生器現在有一個選項可建構 Web 擴充功能,並且還包括對 @vscode/test-web 模組的支援,以從命令列測試 Web 擴充功能。

如果您尚未看過 Visual Studio Code for the Web 的實際運作情況,您可以按下 GitHub 存放庫的 <> 程式碼索引標籤中的 '.' (句點鍵),您將啟動 Web 版 VS Code 以瀏覽和編輯原始碼。

命令的簡短標題

commands 貢獻點允許擴充功能為命令定義 UI 屬性,例如標題、類別或圖示。另一方面,功能表是顯示命令的「位置」,而功能表可能會呈現部分或所有命令的 UI 屬性。例如,某些功能表僅彩現圖示,而其他功能表則彩現標題或類別加上標題。作為擴充功能作者,很難想出一個在全球和本機功能表中同樣運作良好的命令標題。例如,命令面板可以顯示比內容功能表更多的文字。

為了允許不同的標題,有一個新的 shortTitle 屬性。它允許命令提供一個較短的標題,該標題可以根據 UI 良好地運作,例如命令面板中的 筆記本:清除所有儲存格輸出 和筆記本工具列中較短的 清除所有

應用程式主機已新增至環境命名空間

.env 命名空間現在包含應用程式主機 appHost 屬性。appHost 允許擴充功能開發人員判斷 VS Code 託管的環境。範例包括桌面、GitHub Codespaces、github.dev 和 vscode.dev。

RendererContext.workspace.isTrusted 用於筆記本彩現器

傳遞至 筆記本彩現器的內容物件上的新 workspace.isTrusted 屬性可讓擴充功能作者檢查目前的工作區是否受信任

import type { ActivationFunction } from 'vscode-notebook-renderer';

export const activate: ActivationFunction<void> = (ctx) => {
  return {
    renderOutputItem: (outputInfo, element) => {
      if (ctx.workspace.isTrusted) {
        // Render normally. Still take precautions to avoid script injection and
        // only enable as much functionality as your renderer needs.
      } else {
        // Only render safe content. Always make sure it has been properly sanitized.
      }
    }
  }
};

平台特定擴充功能

我們在平台專用擴充功能方面取得了進展,這讓擴充功能作者可以為不同的平台(Windows、macOS、Linux)建立個別的擴充功能版本。我們一直與 Marketplace 團隊合作開發此功能,並已敲定解決方案。在這個里程碑中,我們開始實作,並計劃很快將其提供給擴充功能作者。您可以追蹤issue #23251以取得更新並提供意見反應。

已更新的 codicon

以下新圖示已新增至我們的 codicon 程式庫

An example of updated codicons

  • folder-library
  • run-errors

Walkthrough 貢獻的更新

使用可主題化的 SVG 作為 Walkthrough 步驟媒體

Walkthrough 步驟現在可以在其 media 物件中指定 svg 屬性。除了更好的縮放支援外,SVG 還能存取佈景主題符號,讓媒體在視覺上更融入工作台的其餘部分。請參閱我們的 佈景主題化 webview 內容指南 以取得更多資訊。

宣告 Walkthrough 感興趣的檔案

Walkthrough 現在支援選用的 featuredFor 參數,其中列出給定 walkthrough 適用的檔案類型。當在工作區資料夾中找到這些檔案時,walkthrough 將以更高的視覺優先順序呈現。

工作預設群組 API

TaskGroupisDefault 屬性已最終確定。擴充功能現在可以擷取工作,然後讀取工作 groupisDefault 屬性,以判斷工作是否為該群組的預設工作。

偵錯工具擴充功能撰寫

「DebugSessionOptions」上的新「managedByParent」屬性

已將新的旗標 managedByParent 新增至 DebugSessionOptions 類型。當傳遞至 startDebugging API 時,它會控制是否將 disconnectrestart 等生命週期請求傳送至新建立的工作階段或其父工作階段。

偵錯配接器協定的「showUser」屬性

launch 請求失敗時,VS Code 現在將遵守偵錯配接器回應中傳送的 showUser 屬性。如果提供 showUser 屬性且為 false,VS Code 將不會顯示包含錯誤的強制回應對話方塊。如果 showUser 屬性遺失或為 true,VS Code 的行為將與之前相同,並將顯示錯誤對話方塊。

對於其他偵錯配接器協定 (DAP) 請求,則沒有變更。如果 showUsertrue,則會使用通知顯示錯誤。否則,不會向使用者顯示任何內容。

VS Code 不再為「noDebug」偵錯工作階段註冊中斷點

當 DAP 的 launch 請求的 noDebug 屬性設定為 true 時,VS Code 將不再呼叫任何中斷點註冊 DAP 請求 (setBreakpointssetExceptionBreakpointssetDataBreakpointssetFunctionBreakpointssetInstructionBreakpoints)。

VS Code 現在支援 DAP「setExpression」請求

如果偵錯配接器實作 setExpression 請求 (supportsSetExpression 功能為 true),VS Code 將在兩種情況下使用 setExpression

  • 在 [變數] 和 [監看式] 檢視中,用於變更變數的值,如果偵錯配接器不支援 setVariable 請求 (supportsSetVariable 功能遺失或為 false),且變數具有 evaluateName 屬性且可編輯 (VariablePresentationHint 中的 readOnly 屬性不是 true)。
  • 在 [監看式] 檢視中,用於變更可指派的運算式的值,如果監看式運算式可編輯 (VariablePresentationHint 中的 readOnly 屬性不是 true)。

在 DAP 錯誤訊息中隱藏「開啟 launch.json」按鈕

偵錯配接器協定允許 MessageErrorResponse 傳回 url,其中可以找到關於訊息的其他資訊,以及 urlLabel,它會以 UI 的形式呈現給使用者以開啟 URL。當 VS Code 在強制回應對話方塊中向使用者顯示訊息時,會顯示一個按鈕,其標題為 urlLabel。在此版本之前,VS Code 也會新增一個標題為開啟 launch.json 的按鈕。如果訊息的 url 使用 'command' 方案,例如 command:myExtension.fixError,則不再新增該按鈕。

偵錯介面協定

已發佈新的「memory」事件

memory 事件已完成,現在可在 偵錯配接器協定 的 1.49 版和對應的 npm 模組中使用。如果偵錯配接器已收到 initialize 請求的 supportsMemoryEvent 功能的值 true,則偵錯配接器可以發出 memory 事件,以指示某些記憶體範圍已更新。

建議的擴充功能 API

每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。這是您試用建議 API 必須執行的操作

  • 您必須使用 Insiders 版本,因為建議 API 經常變更。
  • 您必須在擴充功能的 package.json 檔案中包含此行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的原始碼位置。

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

類型階層支援

有一個 TypeHierarchyProvider 的 API 建議,允許擴充功能為符號提供父類型和子類型。API 已準備好試用,如果您發現問題或有建議,可以在 VS Code 儲存庫 中輸入它們。

在任何地方建立終端機

建議的終端機位置 API 允許在面板和編輯器區域中建立終端機分割。

查詢和事件,用於判斷終端機是否已「互動」

一個新的建議 API,用於 Terminal.state 和 window.onDidChangeTerminalState,允許查詢終端機是否已「互動」。互動表示資料已傳送至程序,並且可能由於各種原因而發生,主要原因是鍵盤輸入。

QuickPickItems 中的按鈕

有一個建議 API,用於在 QuickPickItem 中新增和處理按鈕。我們希望這能讓擴充功能提供與 Quick Pick 更豐富的使用者互動。

Buttons in QuickPickItems

試用看看,並告訴我們您的想法。需要注意的一件事是,目前 Quick Pick 的捲動位置存在已知問題,我們認為這個新的建議 API 會放大這個問題。我們正在努力尋找正確的 API 組合來解決這個問題。請透過參與該 issue 來告訴我們您的想法。

測試標籤

測試標籤是一個建議 API,它提供了一種組織測試的方法,以及指示哪些測試可執行。

非錯誤測試輸出

測試 API 支援測試失敗訊息,但先前沒有方法將非錯誤輸出與特定測試案例關聯。我們正在評估一種方法來做到這一點,方法是將選用的 TestItemlocation 傳遞給 TestRun.appendOutput 方法。如果您有任何意見,請在 issue #129201 上留下意見反應!

內嵌完成提供者:與自動完成小工具互動

InlineCompletionContext 有一個新的欄位 selectedCompletionInfo,其中包含自動完成小工具中目前選取建議的詳細資訊。此外,每當使用者變更自動完成小工具中選取的項目時,都會要求 InlineCompletionItemProvider 提供內嵌建議。如果內嵌建議擴充了選取的建議項目,則擴充功能會以斜體顯示。

工程

修正對 RHEL7 和 Centos7 發行版的支援

在 VS Code 1.53 版中,我們更新了我們的組建映像以使用較新的 Electron 版本,導致原生模組的 CXXABI 需求發生變更,這在某些發行版中破壞了我們的 rpm 套件 issue #115784。透過更新到 Electron v13,我們現在能夠使用與執行階段相同的編譯器工具鏈來組建我們的原生模組,特別是我們現在使用 Clang 並靜態連結來自執行階段的 libcxx。這讓我們能夠繞過 CXXABI 需求,而二進位大小僅小幅增加約 10 MB,並恢復對這些發行版的支援。感謝您的耐心和在 Insiders 版本上進行測試的協助。

文件

VS Code 中的 Julia

有一個新的 VS Code 中的 Julia 主題描述 Julia 程式設計語言 在 VS Code 中透過 Julia 擴充功能 提供的支援。Julia 擴充功能包含豐富的語言功能,例如程式碼完成、程式碼導覽和偵錯,以及整合式 REPL 和繪圖導覽器。

Julia extension

Azure Machine Learning

您可以閱讀 VS Code 中的 Azure Machine Learning 概觀,以了解 Azure Machine Learning 擴充功能 如何讓您直接從 VS Code 使用 Azure Machine Learning 雲端式 機器學習模型

重大修正

  • 82489:使用 "AltGr" 鍵時鍵盤輸入不正確
  • 115945:當工具列停靠時,偵錯工具列貢獻的命令遺失
  • 118196:重新啟動偵錯工作階段時,args-list 中的元素不會更新
  • 121201:在 iPad 上選單選取未正確呈現
  • 124128:擴充功能開發視窗在偵錯停止時未關閉
  • 125259:偵錯在啟動前未儲存 launch.json
  • 126102:SkipFiles 仍會暫時開啟要略過的檔案,導致速度變慢
  • 126911:擴充功能偵錯:停止偵錯工作階段不會關閉視窗
  • 128484:debug: 在啟動失敗時停用強制回應對話方塊的選項
  • 129019:以關閉狀態啟動的 treeview 需要另一次重新整理 (或重新開啟) 才能顯示內容
  • 129469:設定編輯器輸入方塊可以更大
  • 129645:在設定 UI 中啟用程式碼區塊語法醒目提示
  • 129844:markdownEnumDescriptions 不會移除設定 UI 中的 markdown `##`,也不會移除 settings.json 中的 ##
  • 130265:Node 偵錯工具不會在未處理的 Promise 拒絕時中斷

感謝

最後但同樣重要的是,衷心感謝以下人士在本月為 VS Code 做出貢獻

對我們的 issue 追蹤的貢獻

vscode 的貢獻

vscode-generator-code 的貢獻

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

monaco-html 的貢獻

monaco-languages 的貢獻