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

2021 年 8 月 (版本 1.60)

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

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

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


歡迎使用 Visual Studio Code 2021 年 8 月版。此版本有許多更新,我們希望您會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

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

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

工作臺

自動語言檢測

上個版本中,我們為無標題檔案引入了一項實驗性功能,可以根據檔案內容自動設定檔案語言模式。自動語言檢測功能使用機器學習來猜測語言,並且機器學習模型完全在您的機器本地執行。該模型由開源機器學習庫 Tensorflow.js 和 GitHub 使用者 @yoeoGuesslang 機器學習模型提供支援。

在此版本中,我們預設啟用自動語言檢測,並將其擴充套件到包括沒有副檔名的檔案。在筆記本中,我們提供了一種使用語言選擇器進行語言檢測的簡單方法。

我們新增此功能是因為我們發現一些 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 來啟用括號對染色。所有顏色都可按主題設定,最多可配置六種顏色。

我們實現此功能是為了解決 CoenraadS 著名的 Bracket Pair Colorizer 擴充套件的效能問題。

現在,即使是大型文件中的更改也會立即反映出來

自動補全中的行內建議

當顯示自動補全小部件時,行內建議現在可以擴充套件建議預覽。如果自動補全小部件中選擇的建議可以由行內補全提供程式擴充套件,則擴充套件部分會以斜體顯示。按一次 Tab 仍只會接受自動補全建議。第二次按 Tab 才會接受行內建議。

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

更新的 Peek 檢視

我們對 Peek 檢視進行了視覺更新,使其與其餘編輯器檢視保持一致

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

雖然這在大多數情況下都適用,但在底行上它會失敗,因為它繪製在畫布的邊界之外。

我們現在透過檢測此類字型並將下劃線紋理向上移動直到它在單元格邊界內來解決這個問題。此解決方案也適用於 canvas 渲染器,canvas 渲染器以前不會為任何行顯示下劃線,因為它會裁剪行以避免重疊。

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 包,因此您可以在自己的專案中使用此工作成果。

除錯

在 WATCH 檢視中設定值

現在可以使用上下文選單中的設定值操作在 WATCH 檢視中設定監視表示式的值。

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

除錯擴充套件必須選擇啟用此功能才能使設定值可用。目前,JS-debug、C# 和 C++ 擴充套件支援此功能,但我們希望其他除錯擴充套件很快也會跟進。

次要 UI 改進

  • VS Code 現在也會在 VARIABLES 檢視、WATCH 檢視和 Debug hover 中檢測值中的連結。當變數的值是連結時,這將使透過單擊該連結來跟隨它變得更容易。

  • 當啟動另一個正在執行的除錯會話例項時,現在會有一個模態確認對話方塊,以防止意外啟動兩個會話。

  • 在編輯器的斷點槽中單擊停用斷點現在會啟用斷點而不是將其刪除。

  • 當除錯會話處於活動狀態時,執行到行操作現在在編輯器的斷點槽上下文選單中可用

新設定

  • 如果您想避免在除錯會話期間意外關閉視窗,可以啟用新設定 debug.confirmOnExit。將其設定為 always,在關閉視窗時將提示您確認是否要停止除錯會話。

    Confirm quit while debugging

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

JavaScript 除錯

舊版 Node 偵錯程式已移除

VS Code 長期以來包含內建的 Node.js 偵錯程式,併發布了單獨的 Chrome 偵錯程式。去年我們為 Node.js 和 Chrome 引入了一個新偵錯程式,從 VS Code 1.47(2020 年 7 月)開始,它一直是預設設定,並帶有“選擇退出”選項。

在此版本中,偵錯程式已從產品中刪除,並在 Marketplace 上標記為已棄用。如果您是未選擇退出新 JavaScript 偵錯程式的大多數 VS Code 使用者之一,則對您沒有任何影響。

如果您需要舊偵錯程式(例如除錯 Node.js 6 程式),可以安裝 [Deprecated] Node Debug[Deprecated] Debugger for Chrome 擴充套件,並分別使用 legacy-nodelegacy-chrome 啟動型別。

改進非同步函式和 Node.js 內部的步進

您可以設定偵錯程式的 skipFiles 以避免步進到某些程式碼中,包括 Node.js 內部,這在非同步函數週圍步進時經常會遇到。

然而,Node.js 在處理 “blackboxed” 指令碼時並不總是表現出正確的行為,因此在此迭代中,我們在偵錯程式中引入了“合成黑盒”。這應該會顯著提高處理 Node.js 程式的可靠性,尤其是在步進到非同步函式中時。

在我們的下一個版本中,我們計劃預設使偵錯程式跳過 Node.js 內部。

安裝程式

預設將 VS Code 註冊為支援的檔案型別

Windows 11 引入了 新的檔案資源管理器上下文選單,將開啟方式放在選單頂部,與開啟分組在一起。此更新使查詢所有可用編輯器和更改預設值變得更加容易。

遵循新的最佳實踐,VS Code 的複選框註冊 VS Code 作為關聯檔案型別的編輯器現在將在 Windows 安裝期間預設選中。我們還審查了關聯檔案型別的列表,並將其擴充套件到包括更多常用檔案型別。

Windows 11 上的 Microsoft Store

隨著即將推出的 Windows 11,新的 Microsoft store 可以支援更多傳統的應用程式型別和安裝程式。如果您已經透過 Windows Insiders 計劃測試 Windows 11,您現在可以透過在商店中搜索來安裝最新版本的 VS Code。安裝後,您將擁有與我們網站上的使用者安裝版本相同的 VS Code,並且更新將像今天一樣在應用程式內處理。

Notebook

筆記本現在支援 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 的筆記本輸出,這種解析可能會成為顯著的瓶頸。

使用新實現,筆記本輸出在傳輸時保持為二進位制資料。您可以在 pull request 中閱讀有關如何實現此功能的詳細資訊。

此修復程式顯著改善了載入其中儲存有大型輸出的筆記本,並改善了筆記本在執行期間生成大型輸出時的效能。

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 鍵對映擴充套件中,如果您喜歡使用 Marketplace 中的另一組 筆記本鍵繫結,您可以停用它。

Python

改進的測試介面

得益於 新的測試 APIPython 擴充套件改進了其測試功能。您現在可以享受更穩定的測試發現、導航和狀態渲染體驗,以及搜尋測試、執行選定的測試、重新執行上次執行的測試等新功能!

Running tests with the new Python Test Explorer

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

您現在可以使用 Python 擴充套件直接從編輯器在終端中執行和除錯 Python 檔案。

GitHub 拉取請求和議題

備受請求的在 GitHub Pull Requests and Issues 擴充套件中展開和摺疊所有評論的功能現已可用。所有評論都可以透過命令GitHub Pull Requests: Expand All CommentsGitHub Pull Requests: Collapse All Comments來展開和摺疊。還有一個設定 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 擴充套件。

如果您還沒有看到 Web 版 Visual Studio Code 的實際應用,您可以在 GitHub 儲存庫的 <> Code 選項卡中按 '.'(句點鍵),您將啟動基於 Web 的 VS Code 版本來瀏覽和編輯原始碼。

命令的短標題

命令貢獻點允許擴充套件定義命令的 UI 屬性,例如標題、類別或圖示。另一方面,選單是顯示命令的“位置”,選單可以呈現命令的部分或全部 UI 屬性。例如,某些菜單隻渲染圖示,而其他選單則渲染標題或類別加標題。作為擴充套件作者,很難想出一個在全球和本地選單中都同樣適用的命令標題。例如,命令面板可以顯示比上下文選單更多的單詞。

為了允許使用不同的標題,有一個新的 shortTitle 屬性。它允許命令提供一個較短的標題,該標題根據 UI 效果良好,例如命令面板中的 Notebook: Clear All Cell Output 和筆記本工具欄中較短的 Clear All

應用程式主機新增到 environment 名稱空間

.env 名稱空間現在包含應用程式主機 appHost 屬性。appHost 允許擴充套件開發人員確定 VS Code 託管的環境。示例包括桌面、GitHub Codespaces、github.dev 和 vscode.dev。

RendererContext.workspace.isTrusted for notebook renderers

傳遞給 筆記本渲染器 的上下文物件上的新 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 團隊合作解決此功能,並最終確定了一個解決方案。在此里程碑中,我們開始實施並計劃很快將其提供給擴充套件作者。您可以關注 問題 #23251 以獲取更新並提供反饋。

更新的 codicons

以下新圖示已新增到我們的 codicon 庫

An example of updated codicons

  • folder-library
  • run-errors

演練貢獻更新

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

演練步驟現在可以在其 media 物件中指定 svg 屬性。除了更好的縮放支援之外,SVG 還提供對主題令牌的訪問,這可以使媒體在視覺上與工作臺的其餘部分融合。有關更多資訊,請參閱我們的 主題化 webview 內容指南

宣告演練感興趣的檔案

演練現在支援可選的 featuredFor 引數,該引數列出了給定演練適用的檔案型別。當在工作區資料夾中找到這些檔案時,演練將以更高的視覺優先順序呈現。

任務預設組 API

TaskGroupisDefault 屬性已最終確定。擴充套件現在可以獲取任務,然後讀取任務 groupisDefault 屬性,以確定任務是否是該組的預設任務。

偵錯程式擴充套件創作

DebugSessionOptions 上新的 "managedByParent" 屬性

已將新標誌 managedByParent 新增到 DebugSessionOptions 型別。當傳遞給 startDebugging API 時,它控制生命週期請求(如 disconnectrestart)是傳送給新建立的會話還是其父會話。

Debug Adapter Protocol 的 "showUser" 屬性

launch 請求失敗時,VS Code 現在將遵守除錯介面卡隨響應傳送的 showUser 屬性。如果提供了 showUser 屬性且為 false,則 VS Code 不會顯示帶有錯誤的模態對話方塊。如果 showUser 屬性缺失或為 true,VS Code 將像以前一樣顯示錯誤對話方塊。

對於其他 Debug Adapter Protocol (DAP) 請求,沒有變化。如果 showUsertrue,則會使用通知顯示錯誤。否則,不會向用戶顯示任何內容。

VS Code 不再為 "noDebug" 除錯會話註冊斷點

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

VS Code 現在支援 DAP "setExpression" 請求

如果除錯介面卡實現了 setExpression 請求(supportsSetExpression 功能為 true),VS Code 將在兩種情況下使用 setExpression

  • 在 VARIABLES 和 WATCH 檢視中,用於更改變數的值,如果除錯介面卡不支援 setVariable 請求(supportsSetVariable 功能缺失或 false),並且如果變數具有 evaluateName 屬性且可編輯(VariablePresentationHint 中的 readOnly 屬性不為 true)。
  • 在 WATCH 檢視中,用於更改可賦值表示式的值,如果監視表示式可編輯(VariablePresentationHint 中的 readOnly 屬性不為 true)。

禁止 DAP 錯誤訊息中的“開啟 launch.json”按鈕

Debug Adapter Protocol 允許 MessageErrorResponse 返回一個 url,可以在其中找到有關訊息的附加資訊,以及一個 urlLabel,它作為用於開啟 URL 的 UI 呈現給使用者。當 VS Code 在模態對話方塊中向用戶顯示訊息時,會顯示一個以 urlLabel 為標題的按鈕。在此版本之前,VS Code 還會新增一個標題為開啟 launch.json的按鈕。如果訊息的 url 使用“command”方案(例如 command:myExtension.fixError),則不再新增該按鈕。

除錯介面卡協議

新的 "memory" 事件釋出

memory 事件已完成,現已在 Debug Adapter Protocol 的 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 允許在面板和編輯器區域中建立終端拆分。

查詢和事件,用於終端是否已“互動”

關於 Terminal.state 和 window.onDidChangeTerminalState 的新擬議 API 允許查詢終端是否已“互動”。互動意味著已向程序傳送資料,可能由於各種原因發生,主要原因是鍵盤輸入。

QuickPickItems 中的按鈕

有一個擬議的 API 用於在 QuickPickItem 中新增和處理按鈕。我們希望這將使擴充套件能夠透過 Quick Pick 提供更豐富的使用者互動。

Buttons in QuickPickItems

試用一下,讓我們知道您的想法。需要注意的一點是,目前存在一個關於 Quick Pick 滾動位置的已知問題,我們認為這個新擬議的 API 會加劇這個問題。我們正在研究解決此問題的正確 API 集。請透過參與該問題讓我們知道您的想法。

測試標籤

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

非錯誤測試輸出

測試 API 支援測試失敗訊息,但以前沒有辦法將非錯誤輸出與某個測試用例相關聯。我們正在評估一種方法,透過將可選的 TestItemlocation 傳遞給 TestRun.appendOutput 方法來實現此目的。如果您有任何意見,請在 問題 #129201 上留下反饋!

行內補全提供程式:與自動補全小部件的互動

InlineCompletionContext 有一個新欄位 selectedCompletionInfo,其中包含自動補全小部件中當前選定建議的詳細資訊。此外,當用戶更改自動補全小部件中選定的專案時,會要求 InlineCompletionItemProvider 提供行內建議。如果行內建議擴充套件了選定的建議專案,則擴充套件部分會以斜體顯示。

工程

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

在 VS Code 1.53 版本中,我們更新了構建映象以使用更新的 Electron 版本,導致原生模組的 CXXABI 要求發生變化,從而破壞了我們某些發行版中的 rpm 包問題 #115784。透過更新到 Electron v13,我們現在能夠使用與執行時相同的編譯器工具鏈構建我們的原生模組,具體來說,我們現在使用 Clang 並靜態連結執行時的 libcxx。這使我們能夠繞過 CXXABI 要求,只需將二進位制大小增加一小部分(約 10 MB),並重新支援這些發行版。感謝您的耐心等待和在 Insiders 上提供測試幫助。

文件

VS Code 中的 Julia

有一個新的 VS Code 中的 Julia 主題,描述了使用 Julia 擴充套件在 VS Code 中對 Julia 程式語言的支援。Julia 擴充套件包括豐富的語言功能,例如程式碼補全、程式碼導航和除錯,以及整合的 REPL 和繪圖導航器。

Julia extension

Azure 機器學習

您可以閱讀 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: 關閉時啟動的樹檢視需要另一次重新整理(或重新開啟)才能顯示內容
  • 129469: 設定編輯器輸入框可以更大
  • 129645: 在設定 UI 中啟用程式碼塊語法高亮
  • 129844: markdownEnumDescriptions 不會刪除設定 UI 中的 markdown <backtick>##<backtick> 並且不會刪除 settings.json 中的 ##
  • 130265: Node 偵錯程式不會在未處理的 promise 拒絕時中斷

感謝

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

對我們問題跟蹤的貢獻

vscode 的貢獻

vscode-generator-code 的貢獻

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

monaco-html 的貢獻

monaco-languages 的貢獻

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