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 月發行版本。此版本有許多更新,我們希望您會喜歡,其中一些重點包括
- 自動語言偵測 - 當您貼到 VS Code 時偵測程式設計語言。
- 內建快速括號配對著色 - 適用於大型檔案的快速括號配對和著色。
- 設定編輯器語法醒目提示 - 設定描述程式碼區塊的豐富語法醒目提示。
- 自訂終端機字元圖像呈現 - 更好地顯示方塊繪圖和區塊元素字元。
- 在監看式檢視中設定值 - 在偵錯階段期間變更監看式值。
- 筆記本改進 - Markdown 連結導覽、更快地呈現大型輸出。
- JavaScript/TypeScript 內嵌提示 - 參數名稱和類型等的內嵌提示。
- 鎖定的編輯器群組預覽 - 透過鎖定編輯器群組來保留慣用的編輯器版面配置。
- Python 擴充功能測試更新 - 更好地支援測試探索、導覽和狀態。
- Web 擴充功能作者指南 - 了解如何在瀏覽器中更新您的 VS Code 擴充功能。
如果您想在線上閱讀這些發行說明,請前往 更新,網址為 code.visualstudio.com。
加入我們的直播,在 9 月 2 日星期四太平洋時間上午 8 點(倫敦下午 4 點)觀看 VS Code 團隊的直播,以觀看此版本新功能的示範,並向我們現場提問。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。
工作台
自動語言偵測
在上一個版本中,我們針對未命名的檔案引入了一項實驗性功能,該功能會根據內容自動設定檔案的語言模式。自動語言偵測功能使用機器學習來猜測語言,而機器學習模型完全在本機電腦上執行。該模型由開放原始碼 ML 程式庫 Tensorflow.js 和 GitHub 使用者 @yoeo 的 Guesslang 的 ML 模型提供支援。
此版本我們預設啟用自動語言偵測,並將偵測範圍擴展到包括沒有檔案副檔名的檔案。在筆記本中,我們提供了一種使用語言選取器輕鬆請求語言偵測的方法。
我們新增此功能是因為我們發現一些 VS Code 新使用者不知道如何設定語言模式,也不知道需要這樣做才能取得 VS Code 的豐富功能集(語言著色和擴充功能建議)。讓新使用者能夠快速查看 VS Code 可用的語言功能和擴充功能,有助於他們快速上手編輯器。
此外,將未命名的文字編輯器用作草稿紙的高階使用者不再需要明確設定語言模式,我們希望這將簡化他們的工作流程。
以下是自動語言偵測啟用的一些有趣情境。
從線上取得範例並將其貼到未命名的編輯器中
佈景主題:Panda Theme
「管線輸入程式碼」語言偵測(展示無副檔名檔案的偵測)
佈景主題:Panda Theme
筆記本語言選取器中的自動偵測選項
佈景主題:Panda Theme
終端機編輯器確認對話方塊
現在,關閉具有執行中子處理序的終端機編輯器時顯示的對話方塊是終端機編輯器專用的,並且不再提供「儲存」終端機的方法。
保持編輯器開啟,而不是在還原失敗時關閉
先前,當編輯器在重新載入視窗或重新啟動應用程式後還原失敗時,編輯器會自動關閉,直到找到成功載入的編輯器為止。這種行為導致令人沮喪的結果,因為精心建立的編輯器版面配置會因為編輯器關閉而消失。
在此版本中,即使編輯器還原失敗,曾經成功開啟的編輯器也不會關閉。編輯器會指示問題並提供重試操作的選項
設定編輯器中程式碼區塊的語法醒目提示
設定描述中的 圍籬程式碼區塊 現在會語法醒目提示
在側邊開啟設定編輯器
現在可以透過使用 openToSide
引數設定按鍵繫結,在側群組中開啟設定編輯器。
{
"key": "cmd+,",
"command": "workbench.action.openSettings",
"args": {
"openToSide": true
}
}
這也適用於 workbench.action.openSettingsJson
命令。
編輯器
高效能括號配對著色
編輯器現在支援原生括號配對著色
可以透過設定 "editor.bracketPairColorization.enabled": true
來啟用括號配對著色。所有色彩都是可佈景主題化的,最多可以設定六種色彩。
我們實作此功能是為了解決著名的 Bracket Pair Colorizer 擴充功能(由 CoenraadS 製作)的效能問題。
現在,即使在大型文件中進行變更也會立即反映出來
自動完成中的內嵌建議
當顯示自動完成小工具時,內嵌建議現在可以擴展建議預覽。如果自動完成小工具中選取的建議可以由內嵌完成提供者擴展,則擴充功能會以斜體顯示。按一下 Tab
鍵仍然只會接受自動完成建議。再次按一下 Tab
鍵將會接受內嵌建議。
此功能需要啟用建議預覽 ("editor.suggest.preview": true
)。
更新的預覽檢視
我們已對預覽檢視進行視覺更新,使其與其他編輯器檢視保持一致
終端機
方塊繪圖和區塊元素字元的自訂呈現
現在,當 GPU 加速開啟時 (terminal.integrated.gpuAcceleration
),方塊繪圖和區塊元素字元會使用像素完美的自訂字元圖像,而不是使用字型。這表示,例如,即使您在終端機中設定行高或字母間距,方塊也會在沒有間隙的情況下繪製。
以下是終端機應用程式 Zenith 的範例,其中顯示區段周圍的方塊繪圖字元以及圖表的區塊元素
可以透過設定 "terminal.integrated.customGlyphs": false
來停用此功能。
改進某些字型的底線呈現
終端機中底線的呈現方式存在一些歷史問題,其中大部分問題已透過切換到 WebGL 轉譯器(預設)來修正。其中一個例外是,字型中的底線字元意外地繪製在 Linux 上儲存格的邊界下方。
請注意,下排的底線是如何繪製在儲存格下方的
雖然這在大多數情況下都運作良好,但在底排會失敗,因為它繪製在畫布的邊界之外。
我們現在透過偵測此類字型並向上移動底線紋理直到它在儲存格的邊界內來解決此問題。此解決方案也適用於畫布轉譯器,該轉譯器先前不會顯示任何列的底線,因為它會裁剪列以避免重疊。
重新載入視窗後更快速地重新連線
先前,重新載入視窗時,可能需要長達 300 毫秒才能剖析終端機緩衝區的狀態,並且也可能發生損毀。對於多個忙碌的終端機,這可能會迅速累積!為了修正此問題,還原緩衝區的方法已從記錄 pty 主機 上大量最近的原始終端機事件變更為在 pty 主機上維護無頭終端機前端並將所有資料寫入其中。
此方法帶來多項優點
- 可以微調要還原的回溯量。預設值現在為 100,這是速度與資料量之間的良好平衡。可以使用
terminal.integrated.persistentSessionScrollback
設定來變更回溯量。 - 由於 xterm.js 的快速剖析器,這應該對 CPU 使用率產生最小的影響,並減少 pty 主機上的整體記憶體使用量。
- 終端機模式現在已明確還原,這可能會在之前錯過並導致緩衝區損毀。
- 不再需要重播昂貴的調整大小事件,因為終端機的緩衝區始終與其大小同步。
- 由於還原速度相對較快,因此所有還原都在單一框架中處理。這表示寶貴的 CPU 時間不會浪費在轉譯部分還原的終端機上,從而進一步減慢速度。
此新實作提供的加速幅度取決於許多因素,例如終端機數量、硬體、終端機緩衝區大小以及終端機中發生的情況。還原完整終端機緩衝區的粗略估計應產生大約 5-10 倍的加速。
我們也在 npm 上發佈了新的 xterm-headless 套件,因此您可以在自己的專案中使用此工作。
偵錯
在監看式檢視中設定值
現在可以使用內容功能表中的 設定值 動作,在監看式檢視中設定監看式運算式的值。
偵錯擴充功能必須選擇加入此功能,才能使 設定值 可用。目前,JS-debug、C# 和 C++ 擴充功能支援此功能,但我們預期其他偵錯擴充功能也會很快跟進。
次要 UI 改進
-
VS Code 現在也會在 [變數] 檢視、[監看式] 檢視和偵錯暫留中偵測值的連結。當變數的值是連結時,這將使其更容易透過按一下連結來追蹤該連結。
-
當啟動已在執行的偵錯階段的另一個執行個體時,現在會有強制回應確認對話方塊,以防止意外啟動兩個階段。
-
現在,按一下編輯器中斷點邊界中的已停用中斷點會啟用中斷點,而不是移除中斷點。
-
當偵錯階段處於活動狀態時,[執行至行] 動作現在可在編輯器的中斷點邊界內容功能表中使用
新設定
-
如果您想要避免在偵錯階段期間意外關閉視窗,您可以啟用新的設定
debug.confirmOnExit
。將此設定為always
後,當您關閉視窗時,系統會提示您確認是否要停止偵錯階段。 -
新的設定
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-node
或 legacy-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 儲存格之間的連結
您可以使用以下方式建立 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 擴充功能。其他擴充功能的啟動不會減慢檔案操作速度,以確保快速開啟筆記本。
筆記本版面配置自訂
您現在可以直接透過編輯器工具列自訂筆記本版面配置設定。
語言功能
TypeScript 4.4
VS Code 現在包含 TypeScript 4.4。此更新帶來了對許多新語言功能和改進的支援,包括 靜態區塊 和 新的嚴格選項。它也新增了新的工具改進並修正了一些重要的錯誤。
您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.4 的所有資訊。
JavaScript 和 TypeScript 的內嵌提示
TypeScript 4.4 中最重要的新工具功能是內嵌提示支援。內嵌提示會將其他內嵌資訊新增至原始程式碼,以協助您了解程式碼的作用。
例如,參數名稱內嵌提示會顯示函式呼叫中參數的名稱
這可以協助您一目了然地了解每個引數的含義,這對於採用布林旗標或具有容易混淆的參數的函式特別有用。
若要啟用參數名稱提示,請設定 javascript.inlayHints.parameterNames.enabled
或 typescript.inlayHints.parameterNames.enabled
設定。有三個可能的值
none
- 停用參數內嵌提示。literals
- 僅顯示常值 (字串、數字、布林值) 的內嵌提示。all
- 顯示所有引數的內嵌提示。
此外,VS Code 也提供內嵌提示,以顯示 JavaScript 和 TypeScript 程式碼中的隱含類型資訊。
變數類型內嵌提示 顯示沒有明確類型註解的變數類型。
設定 - javascript.inlayHints.variableTypes.enabled
和 typescript.inlayHints.variableTypes.enabled
屬性類型內嵌提示 顯示沒有明確類型註解的類別屬性類型。
設定 - javascript.inlayHints.propertyDeclarationTypes.enabled
和 typescript.inlayHints.propertyDeclarationTypes.enabled
參數類型提示 顯示隱含類型參數的類型。
設定 - javascript.inlayHints.parameterTypes.enabled
和 typescript.inlayHints.parameterTypes.enabled
傳回類型內嵌提示 顯示沒有明確類型註解的函式傳回類型。
設定 - javascript.inlayHints.functionLikeReturnTypes.enabled
和 typescript.inlayHints.functionLikeReturnTypes.enabled
我們計劃繼續改進內嵌提示,因此請務必分享您對新功能的任何意見反應!
JavaScript 檔案中的拼字建議
VS Code 現在可協助您在 JavaScript 檔案中捕捉簡單的拼字錯誤
只有當非常有把握地認為它們是實際錯誤,而不僅僅是我們的 IntelliSense 引擎不理解的程式碼模式時,才會顯示拼字建議。您可以在新增此功能的 PR 中閱讀有關此功能的詳細資訊。
您也可以透過設定停用這些建議
"javascript.suggestionActions.enabled": false
如需更全面的檢查,請嘗試在 JavaScript 程式碼中啟用完整語意檢查。這不僅可以協助捕捉更多錯誤,還可以啟用多個有用的快速修正。
typescript.tsserver.useSyntaxServer
新的 typescript.tsserver.useSyntaxServer
設定可讓您控制 TypeScript 是否啟動專用伺服器來快速處理語法相關操作,例如計算程式碼摺疊。它取代了現在已淘汰的 typescript.tsserver.useSeparateSyntaxServer
設定。
可能的值為
auto
- 產生完整伺服器和專用於語法操作的輕量型伺服器。語法伺服器用於加速語法操作,例如程式碼摺疊,並在專案載入時提供 IntelliSense。(預設)always
- 使用輕量型語法伺服器來處理所有 IntelliSense 操作。此語法伺服器只能為已開啟的檔案提供 IntelliSense。never
- 不要使用專用語法伺服器。使用單一伺服器來處理所有 IntelliSense 操作。
預覽功能
鎖定的編輯器群組
隨著 編輯器區域中的終端機 的引入,我們收到使用者回報,他們對終端機編輯器太容易或意外地被檔案編輯器取代感到沮喪。預設情況下,檔案將始終在活動編輯器群組中開啟,因此,即使終端機處於活動狀態,檔案也會開啟並隱藏終端機。
鎖定的編輯器群組 提供了一種處理此問題的新方法,不僅適用於終端機,也適用於任何編輯器。如果您開啟了多個編輯器群組,您現在可以鎖定它,可以使用其中一個新命令或從 "..." 溢位功能表鎖定
鎖定的群組的行為與未鎖定的群組不同
- 除非使用者明確將新編輯器移動到鎖定的群組(例如,透過拖放),否則新編輯器不會在鎖定的群組中開啟。
- 如果編輯器跳過鎖定的群組以開啟,它將在最近使用的未鎖定群組中開啟,或在鎖定的群組的側邊建立新群組。
- 編輯器群組的鎖定狀態會持續存在並在重新啟動後還原。
- 您也可以鎖定空的群組,以實現更穩定的編輯器版面配置。
- 鎖定的群組由動作工具列(右上角)中的鎖定圖示指示。
請參閱以下示範鎖定的編輯器群組如何在動作中運作的範例。即使 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)) 中排除模糊搜尋結果的功能。
此功能發光發熱的情境
當查詢只有幾個字元時
如果您想要減少結果的「雜亂」
我們喜歡這種引號體驗,並且感覺很直觀,因為大多數搜尋引擎都使用類似的機制,但我們希望您提供意見反應。我們也在考慮 issue #131431 中討論的其他方法。
擴充功能的貢獻
Jupyter
逐行執行
VS Code 現在支援 Jupyter 筆記本中的 逐行執行 功能。這是一種簡單的偵錯模式,可讓您逐行執行儲存格的程式碼。若要試用,請確保您已安裝 ipykernel
v6+ 作為選取的核心,然後選取 逐行執行 按鈕。
偵錯
也提供使用 VS Code 的完整偵錯功能偵錯 Jupyter 筆記本的實驗性支援。若要試用,請確保您已安裝 ipykernel
v6+ 作為選取的核心,設定 "jupyter.experimental.debugging": true
,設定中斷點,然後選取 偵錯儲存格 命令。
Jupyter 按鍵對應
我們將 Jupyter 傳統按鍵繫結提取到個別的 Jupyter Keymap 擴充功能,如果您偏好使用 Marketplace 中的另一組 筆記本按鍵繫結,您可以停用該擴充功能。
Python
改進的測試介面
由於 新的測試 API,Python 擴充功能 已改進其測試功能。您現在可以享受更穩定的測試探索、導覽和狀態呈現體驗,以及搜尋測試、執行選取的測試、重新執行上次執行的測試等新功能!
從編輯器在終端機中執行和偵錯 Python 檔案
您現在可以直接從編輯器使用 Python 擴充功能在終端機中執行 和偵錯 您的 Python 檔案。
GitHub Pull Requests and Issues
現在可以使用 GitHub Pull Requests and Issues 擴充功能中備受要求的功能,即展開和摺疊所有註解。所有註解都可以透過 GitHub Pull Requests:展開所有註解 和 GitHub Pull Requests:摺疊所有註解 命令展開和摺疊。還有一個設定 githubPullRequests.commentExpandState
可控制展開摺疊狀態。最後,您也可以從註解 UI 內摺疊所有註解
若要了解所有新功能和更新,您可以查看擴充功能 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 存放庫的 <> 程式碼 索引標籤中的 '.'
(句點鍵),您將啟動 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 程式庫
folder-library
run-errors
Walkthrough 貢獻的更新
使用可主題化的 SVG 作為 Walkthrough 步驟媒體
Walkthrough 步驟現在可以在其 media
物件中指定 svg
屬性。除了更好的縮放支援外,SVG 還提供對主題符記的存取權,這可以讓媒體在視覺上與工作台的其餘部分融為一體。請參閱我們的 主題化 webview 內容指南以取得更多資訊。
宣告 Walkthrough 感興趣的檔案
Walkthrough 現在支援選用的 featuredFor
參數,該參數列出給定 walkthrough 適用的檔案類型。當在工作區資料夾中找到這些檔案時,walkthrough 將以更高的視覺優先順序呈現。
Tasks 預設群組 API
TaskGroup
的 isDefault
屬性已定案。擴充功能現在可以擷取工作,然後讀取工作 group
的 isDefault
屬性,以判斷工作是否為該群組的預設工作。
偵錯工具擴充功能撰寫
"DebugSessionOptions" 上的新 "managedByParent" 屬性
已將新的旗標 managedByParent
新增至 DebugSessionOptions
類型。當傳遞至 startDebugging
API 時,它會控制是否將生命週期請求 (例如 disconnect
和 restart
) 傳送至新建立的工作階段或其父工作階段。
Debug Adapter Protocol 的 "showUser" 屬性
當 launch
請求失敗時,VS Code 現在將遵循從偵錯配接器回應傳送的 showUser
屬性。如果提供 showUser
屬性且為 false,VS Code 將不會顯示包含錯誤的強制回應對話方塊。如果 showUser
屬性遺失或為 true
,VS Code 的行為將與之前相同,並顯示錯誤對話方塊。
對於其他 Debug Adapter Protocol (DAP) 請求,則沒有變更。如果 showUser
為 true
,則會使用通知顯示錯誤。否則,不會向使用者顯示任何內容。
VS Code 不再為 "noDebug" 偵錯工作階段註冊中斷點
當 DAP launch
請求的 noDebug
屬性設定為 true
時,VS Code 將不再呼叫任何中斷點註冊 DAP 請求 (setBreakpoints
、setExceptionBreakpoints
、setDataBreakpoints
、setFunctionBreakpoints
、setInstructionBreakpoints
)。
VS Code 現在支援 DAP "setExpression" 請求
如果偵錯配接器實作 setExpression
請求 (supportsSetExpression
功能為 true
),VS Code 將在兩種情況下使用 setExpression
- 在 [變數] 和 [監看式] 檢視中,用於變更變數的值,如果偵錯配接器不支援
setVariable
請求 (supportsSetVariable
功能遺失或為false
),且如果變數具有evaluateName
屬性且可編輯 (VariablePresentationHint
中的readOnly
屬性不是true
)。 - 在 [監看式] 檢視中,用於變更可指派運算式的值,如果監看式運算式可編輯 (
VariablePresentationHint
中的readOnly
屬性不是true
)。
在 DAP 錯誤訊息中隱藏「開啟 launch.json」按鈕
Debug Adapter Protocol 允許 Message 的 ErrorResponse 傳回 url
,可在其中找到關於訊息的其他資訊,以及 urlLabel
,其會呈現給使用者作為開啟 URL 的 UI。當 VS Code 在強制回應對話方塊中向使用者顯示訊息時,會顯示一個按鈕,其標題為 urlLabel
。在此版本之前,VS Code 也會新增一個標題為開啟 launch.json的按鈕。如果訊息的 url
使用 'command' 方案,例如 command:myExtension.fixError
,則不再新增該按鈕。
偵錯配接器協定
新的 "memory" 事件已發佈
memory
事件已完成,現在可在 Debug Adapter Protocol 和對應 npm 模組的 1.49 版中使用。如果偵錯配接器已收到 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 的互動。
試用看看並告訴我們您的想法。需要注意的一件事是,目前 Quick Pick 的捲軸位置存在已知問題,我們認為這個新的建議 API 將會放大此問題。我們正在努力尋找正確的 API 組合來解決此問題。請透過參與 issue 讓我們知道您的想法。
測試標籤
測試標籤是一個建議 API,它提供組織測試的方法,以及指示哪些測試是可執行的。
非錯誤測試輸出
測試 API 支援測試失敗訊息,但先前沒有方法將非錯誤輸出與特定測試案例關聯起來。我們正在評估一種方法來執行此操作,方法是將選用的 TestItem
和 location
傳遞至 TestRun.appendOutput
方法。如果您有任何意見,請在 issue #129201 上留下意見反應!
Inline Completion Provider:與自動完成小工具互動
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
有一個新的 Visual Studio Code 中的 Julia 主題,描述了 VS Code 中對 Julia 程式設計語言的支援,透過 Julia 擴充功能。Julia 擴充功能包含豐富的語言功能,例如程式碼完成、程式碼導覽和偵錯,以及整合的 REPL 和繪圖導覽器。
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:偵錯:在啟動失敗時停用強制回應對話方塊的選項
- 129019:以關閉狀態啟動的樹狀檢視需要另一次重新整理 (或重新開啟) 才能顯示內容
- 129469:設定編輯器輸入方塊可以更大
- 129645:在設定 UI 中啟用程式碼區塊語法醒目提示
- 129844:markdownEnumDescriptions 不會移除設定 UI 中的 markdown `##`,並且不會移除 settings.json 中的 ##
- 130265:Node 偵錯工具不會在未處理的 Promise 拒絕時中斷
感謝您
最後但同樣重要的是,感謝以下人士本月對 VS Code 的貢獻
對我們問題追蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Sandeep Rajakrishnan (@san-coding)
- ArturoDent (@ArturoDent)
對 vscode
的貢獻
- @afonsomatos (Afonso Matos):修正陰影 DOM 中拖放無法運作的問題 PR #131392
- @akosyakov (Anton Kosyakov):為開啟的分頁使用個別的事件迴圈 PR #126341
- @AkatQuas (Akat)
- 修正註解中的一些錯字,重新命名一些方法 PR #130470
- fix(storage):修正方法錯字 PR #131051
- @chrisyeh96 (Christopher Yeh):跨轉譯呼叫持續保存 KaTeX 巨集 PR #129747
- @Chigusa0w0 (Chigusa0w0):修正使用觸控板以低速向下捲動時的奇怪行為 PR #131231
- @erha19 (Dan):fix:偵錯主控台變數輸出問題 PR #127132
- @Eskibear (Yan Zhang):查看類型階層 PR #130922
- @gjsjohnmurray (John Murray)
- fix #126842 在重新整理成功時清除 Explorer 根資料夾錯誤指示器 PR #126843
- fix #129296 在導覽簡單檔案對話方塊時保留授權、查詢、片段 PR #129310
- 如果 DA 提供命令,則在錯誤對話方塊中隱藏「開啟 launch.json」命令 (#_124020) PR #130754
- 改善 workbench.editor.experimentalAutoLockGroups 文字 PR #131157
- fix #131743 僅在新增 'Run to Line' 時新增選單分隔符號 PR #131744
- @jeanp413 (Jean Pierre)
- 修正重新載入後分割第一個終端機有時非常窄的問題 PR #129668
- 修正 cmd+click 無效連結以在 markdown 中建立新檔案的問題 PR #130815
- 修正筆記本 UI 顯示在終端機上的問題 PR #130854
- 修正參數提示應使用連結懸停色彩的問題 PR #130963
- 修正建議詳細資訊應使用連結懸停色彩的問題 PR #130966
- @jihoon-ernesto:新增終端機快速鍵 cmd+. → ctrl+c 以符合 macOS 終端機 PR #131025
- @jsjoeio (Joe Previte):feat:使用名稱中的埠新增 asWebviewUri 測試 PR #131447
- @Kingwl (Wenlu Wang):修正具有內嵌提示的摺疊範圍 PR #130399
- @lezgomatt (Matthew Go):修正自訂選取方塊懸停樣式 PR #129970
- @nickofolas:修正狀態列中的文法問題 PR #131271
- @nrayburn-tech (Nicholas Rayburn):Fix #124276 批次 Markdown 檔案請求 PR #124545
- @remcohaszing (Remco Haszing):定義 window.MonacoEnvironment PR #128949
- @sdissegna-maystreet:[#131407] 修正瀏覽器中的 Service Worker 版本檢查 PR #131408
- @spahnke (Sebastian Pahnke):[獨立編輯器] 新增支援以列出註冊
CodeActionProvider
時提供的程式碼動作種類 PR #131254 - @spasche (Sylvain Pasche):從基礎複製 URI 授權以分割終端機,修正 #127811 PR #130291
- @ssigwart (Stephen Sigwart):更新選取以符合括號方向 PR #128931
- @suzmue (Suzy Mueller):依回應順序排序執行緒 PR #128686
- @threeal (Alfi Maulana):feat:新增 .tpp 和 .txx 作為 c++ 擴充功能 PR #130101
- @tony-xia (Tony Xia)
- 更新方法名稱 PR #129224
- 更新變數名稱 PR #129226
- @vagusX (vagusX):fix:移除 vscode.FileDecoration api 中無用的優先順序欄位 PR #129501
- @xgdgsc:按一下已停用的中斷點以啟用而不是移除 #125904 PR #125931
- @xisui-MSFT
- 修正反組譯碼檢視中已焦點堆疊框架色彩 PR #129721
- 在反組譯碼檢視中將事件接聽程式移至 renderTemplate PR #129734
- 改善反組譯碼檢視中的協助工具 PR #129788
- 在反組譯碼不可用時新增特殊項目 PR #129797
- @yannickowow (Yanis HAMITI):[debugService #113742] 偵錯工作階段結束時的變數顯示 PR #131016
- @yash112-lang (Yash Singhal):修正垂直對齊 PR #130327
對 vscode-generator-code
的貢獻
- @octref (Pine):新增本機開發提示 PR #296
對 vscode-js-debug
的貢獻
- @Manish-Giri (Manish Giri):更新 userDataDir 選項文件 PR #1078
對 vscode-pull-request-github
的貢獻
- @joshuaobrien (Joshua O'Brien)
- @RishabhKothaari (Rishab):讓檢視知道 PR 的檢閱狀態 PR #1833
對 debug-adapter-protocol
的貢獻
- @robertoaloi (Roberto Aloi):新增 Erlang 配接器 PR #202
對 language-server-protocol
的貢獻
- @okuramasafumi (OKURA Masafumi):最新版本現在是 3.16 PR #1321
- @OliverKovacs (Oliver Kovacs):修正錯字 PR #1332
- @vintagedave (David Millington):依語言調整字母排序 PR #1323
- @Wilfred (Wilfred Hughes):修正 honorsChangeAnnotations 描述中的錯字 PR #1322
對 monaco-editor
的貢獻
- @SpaceComet:網站 playground 的小更新 PR #2616
- @thien-do (Thien Do):將與 Vite 的用法新增至 ESM Integrate 文件 PR #2632
對 monaco-html
的貢獻
- @Pranomvignesh (Pranom Vignesh):fix(workerManager.js):新增 worker 是否存在的檢查 PR #15
對 monaco-languages
的貢獻
- @ladyrick (LadyRick):fix(cpp):修正 cpp 語言整數後綴 PR #156