🚀 在 VS Code 中

2023 年 7 月 (版本 1.81)

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

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


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

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

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

協助工具

協助工具檢視改進

開啟協助工具檢視」(⌥F2 (Windows Alt+F2、Linux Shift+Alt+F2)) 命令可讓螢幕閱讀器使用者逐字元、逐行檢查內容。上次迭代,我們為編輯器浮動提示和聊天面板回應新增了「協助工具檢視」。

現在通知、內嵌聊天回應、Jupyter 筆記本輸出和工作台浮動提示都有「協助工具檢視」。

當焦點放在提供「協助工具檢視」的元素上時,ARIA 標籤中會提供提示。可以透過 accessibility.verbosity 設定針對每個功能停用該提示。

有「在協助工具檢視中顯示下一個」(⌥] (Windows、Linux Alt+])) 和「在協助工具檢視中顯示上一個」(⌥[ (Windows、Linux Alt+[)) 命令,方便在聊天面板和通知清單中的元素之間輕鬆導覽。

階層連結符號資訊

在使用「焦點並選取階層連結」(breadcrumbs.focusAndSelect) 命令後,階層連結導覽現在包含螢幕閱讀器的符號資訊。

輸入控制項和結果導覽一致性

現在,在輸入控制項 (例如,搜尋或篩選輸入) 與其結果之間導覽的體驗,在擴充功能檢視、鍵盤快速鍵編輯器,以及註解、問題和偵錯主控台面板中使用 (⌘↓ (Windows、Linux Ctrl+Down)) 和 (⌘↑ (Windows、Linux Ctrl+Up)) 時,會保持一致。

協助工具差異檢視器

在差異編輯器中,「差異檢閱窗格」已重新命名為「協助工具差異檢視器」。協助工具差異檢視器解決了差異編輯器的協助工具缺點,可以使用 F7 或差異編輯器「更多動作」選單中的「開啟協助工具差異檢視器」命令開啟。除了此重新命名之外,我們也修正了一些錯誤並新增了一些新功能,例如能夠啟動「協助工具說明」對話方塊或從檢視器跳到修改後的編輯器。

設定檔

支援部分設定檔

您現在可以建立一個設定檔,在其中僅自訂組態的子集 (設定、鍵盤快速鍵、程式碼片段、工作和擴充功能)。例如,您可以建立一個包含除鍵盤快速鍵之外的所有組態的設定檔,而當此設定檔處於作用中狀態時,VS Code 會套用預設設定檔中的鍵盤快速鍵。

在以下「建立新設定檔」螢幕擷取畫面中,「鍵盤快速鍵」未勾選,並顯示「使用預設設定檔」訊息。在該 VS Code 工作階段期間作用中的任何鍵盤快速鍵都不會套用至新的設定檔。

Create New Profile dropdown with keyboard shortcuts unchecked

當從設定檔範本或現有設定檔複製時,您也可以使用「從...複製」下拉式選單來建立部分設定檔。

Create a profile by copying from a Project Template or existing profile

您也可以透過在「編輯設定檔」UI 中編輯設定檔,將現有設定檔設定為使用預設設定檔中的組態。

Edit Profile dropdown with Keyboard Shortcuts unchecked

匯出部分設定檔時,您可以選擇僅匯出設定檔中自訂的組態,或也包含預設設定檔中的組態。

Profile view with Keyboard Shortcuts unchecked and Export button visible

將設定套用至所有設定檔

您現在可以透過選取「設定編輯器」中的「將設定套用至所有設定檔」選項,將設定套用至所有設定檔。

Apply Setting to all Profiles context menu item in the Settings editor

這會將設定的值套用至所有設定檔。從任何設定檔對此設定進行的任何更新都會套用至所有設定檔。您可以取消勾選「將設定套用至所有設定檔」選項來還原此同步處理。

將擴充功能套用至所有設定檔

您現在可以透過選取「擴充功能」檢視中的「將擴充功能套用至所有設定檔」選項,將擴充功能包含在所有設定檔中。

Apply Extension to all Profiles context menu item in the Extensions view

這會使此擴充功能在所有設定檔中都可用。您可以取消勾選「將擴充功能套用至所有設定檔」選項來還原此設定。

在非預設設定檔上調整設定 JSON 檔案命令識別碼

當使用者位於非預設設定檔中時,「喜好設定:開啟使用者設定 (JSON)」(workbench.action.openSettingsJson) 命令現在將開啟設定檔特定的設定 JSON 檔案。若要顯示應用程式範圍的設定,請改用「喜好設定:開啟應用程式設定 (JSON)」(workbench.action.openApplicationSettingsJson) 命令。

工作台

即將到來的更新版本資訊

每當每月穩定更新準備好安裝時,您現在可以透過活動列底部「管理」選單 (齒輪按鈕) 中的「顯示更新版本資訊」命令預覽版本資訊。

編輯器

markdown.editor.pasteUrlAsFormattedLink 設定現在有一個新的選項 smartsmart 貼上功能可以偵測您何時貼到可能不想要自動 Markdown 連結格式化的文字中。smart 貼上忽略的一些情況包括貼在 Markdown 連結內、覆蓋另一個 Markdown 連結以及在程式碼區塊內。

依預設,pasteUrlAsFormattedLink 功能目前已關閉 (never),但您可以將設定變更為 smartalways (永遠建立格式化的 URL 連結)。

非同步語彙基元化推出

1.76 更新中,我們在網頁工作者上實作了編輯器文件非同步語彙基元化,以改善轉譯器處理序的效能。從那時起,我們修正了由罕見的競爭條件引起的一些錯誤,並在此版本中,我們開始將此功能推廣給穩定版使用者。

如果您不想等待,可以將 editor.experimental.asyncTokenization 設定為 true,立即取得非同步語彙基元化。

差異編輯器

在此迭代中,我們繼續致力於新的差異編輯器,並計畫逐步將其推廣給穩定版使用者。您可以立即透過設定 "diffEditor.experimental.useVersion2": true 來試用。新的差異編輯器包含以下描述的幾項新功能和錯誤修正。

折疊未變更的區域

使用 diffEditor.experimental.collapseUnchangedRegions 在新的差異編輯器中啟用隱藏未變更的區域。當檢閱具有大量未變更行的巨大差異時,此功能很有用。

可以拖曳或按一下隱藏行區塊的邊框,以顯示來自底部或頂部的文字。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

差異區域對齊

新的差異編輯器現在會對齊差異區域內的文字,讓您更容易檢閱縮排已變更且已插入行的差異。

之前 (未啟用差異區域對齊和空白字元差異)

A side by side diff without diff region alignment

之後 (已啟用差異區域對齊)

A side by side diff with diff region alignment

新的差異演算法現在預設為啟用

我們已完成新的差異演算法的推廣,現在已成為 VS Code 中的預設演算法。您可以在過去的版本資訊中閱讀有關演算法改進的一些資訊。

差異雜訊降低

在此更新中,我們在新的差異演算法中新增了啟發法,以降低比對不相關字詞的可能性。

這是差異編輯器之前的外觀 (請注意 this 如何在兩側比對,即使比對沒有幫助)

Before using the new diff algorithm

這是現在使用啟發式改進後的外觀 (請注意,不相關的比對較少)

After using the new diff algorithm heuristics

切換側邊

使用新的差異編輯器的並排檢視時,現在有一個新的命令「差異編輯器:切換側邊」,可讓您從一側跳到另一側。切換側邊時,作用中編輯器中的游標位置和目前選取範圍會對應到另一側。

還有更多

查看 1.80 版本資訊,以取得有關新差異編輯器中已變更內容的更詳細說明!

終端機

內嵌終端機索引標籤中的自訂浮動提示

當有單一終端機時顯示的面板內嵌終端機索引標籤,現在使用自訂浮動提示以獲得更一致的外觀,並支援內嵌連結。

Hovering the inline terminal tab will show information about the terminal

原始檔控制

根據社群意見反應,現在支援路徑上具有符號連結的 Git 存放庫,方法是使用 --path-format 選項,該選項已新增至版本 2.31 中的 rev-parse Git 命令。從此版本開始,當開啟此類存放庫時,所有原始檔控制功能 (例如,「原始檔控制」檢視、存放庫偵測、已新增/修改/刪除的行編輯器裝飾等等) 都應如預期般運作。

偵錯

JavaScript 偵錯工具

支援 Fast Node (Version) Manager

JavaScript 偵錯工具現在在其執行階段版本中支援 Fast Node Manager (fnm)。fnm 的使用者現在可以設定 launch.jsonruntimeVersion 屬性,以選取 Node.js 版本。

筆記本

關閉筆記本的豐富內容搜尋

在先前的版本中,我們針對開啟的筆記本引入了豐富內容工作區搜尋。現在有預覽支援,也可查看關閉筆記本的豐富內容結果。

當您在「搜尋」檢視中搜尋文字時,來自筆記本的結果預覽應符合您開啟筆記本編輯器時字串的外觀。請注意,這只會在筆記本關閉時顯示輸入的結果。若要試用此功能,請在設定中啟用 search.experimental.closedNotebookRichContentResults

改善大型串流輸出的效能

我們已針對在執行期間串流的大型儲存格輸出進行效能改進。這減少了轉譯活動的數量,但目前僅適用於可捲動的儲存格輸出。

筆記本黏性捲動

此版本為筆記本編輯器帶來了「黏性捲動」的首次迭代。筆記本編輯器頂部的黏性捲動顯示目前可見的儲存格或儲存格輸出的 Markdown 標頭。選取黏性捲動「行」會將焦點放在該儲存格上,讓您可以快速導覽筆記本。此功能透過 notebook.stickyScroll.enabled 設定或「檢視:切換筆記本黏性捲動」命令啟用。

適用於網頁的 VS Code

永遠載入最新版本的內建擴充功能

vscode.dev 現在永遠載入最新版本的內建擴充功能。這表示當您開啟 vscode.dev 時,您將不再看到「需要重新載入」通知,以將內建擴充功能更新至最新版本。

遠端開發

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

重點包括

  • 從 VS Code 將遠端通道安裝為服務。
  • 簡化的 @devcontainers/cli 安裝。
  • 在鎖定檔中記錄開發容器功能相依性。

您可以在遠端開發版本資訊中了解新的擴充功能功能和錯誤修正。

擴充功能的貢獻

GitHub Copilot

快速聊天 UX 改進

此迭代已改進「快速聊天」體驗。

與之前一樣,您可以使用 ⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) 切換此檢視。具體改進包括

  • 對話式聊天:「快速聊天」體驗現在會顯示您的完整對話,同時仍將最後一個問題和答案保持在焦點中。
  • 斜線命令完成:當您輸入 / 時,現在有斜線命令的完成項目。

此外,還有一個實驗性設定 chat.experimental.defaultMode,可控制顯示哪些聊天部分。它有三個選項

  • chatView - 在活動列中顯示「聊天」圖示,以在「聊天」檢視中啟動聊天 (預設)。
  • quickQuestion - 在標題列中顯示「聊天」圖示,以啟動「快速聊天」。
  • both - 「聊天」圖示都可見,讓您可以開啟任一聊天 UI。

我們想知道您對此設定和一般「快速聊天」體驗的想法,因此請隨時開啟 問題 以提供意見反應。

斜線命令改進

我們已對面板、內嵌和「快速聊天」中的斜線命令進行了以下可用性改進

  1. 斜線命令現在以區塊呈現,可以使用單一退格鍵刪除。
  2. 從建議清單接受斜線命令,例如 /clear/help,現在會執行命令,無需在接受完成項目後明確提交聊天請求。
  3. /createWorkspace 面板聊天斜線命令在第一次在問題中使用後,會在聊天輸入中重新填入,讓您可以輕鬆提出有關工作區的後續問題。

以下錄製內容說明了所有三項改進

反覆修正

使用 /fix 命令時,您可以使用設定 github.copilot.editor.iterativeFixing 啟用反覆修正。啟用反覆修正後,如果在第一次修正後,選取範圍中仍有診斷錯誤,則會再次執行修正。此設定預設為啟用。

筆記本產生改進

在產生筆記本時,還有其他步驟可以改善產生程式碼的品質,並修正語言擴充功能在產生程式碼中偵測到的診斷。預設為停用,但可以使用以下設定啟用

"github.copilot.notebook": {
  "iterativeFixing": true,
  "iterativeImproving": true
}

內嵌聊天

使用內嵌聊天時,您現在可以使用設定 inlineChat.showDiff 啟用和停用差異檢視。您可以滑鼠右鍵按一下內嵌聊天以顯示內容選單來變更此設定。

終端機內容

Copilot Chat 現在知道作用中終端機的緩衝區和選取範圍。

Python

容錯 pytest 探索

作為我們新的測試架構推廣的一部分,「測試總管」面板現在支援容錯 pytest 探索。當 pytest 在探索期間擲回可處理的錯誤時,例如,來自不明匯入的錯誤,所有其他測試仍將在具有錯誤的檔案外部探索。此功能僅適用於新的測試重寫,這仍然是實驗性的。重寫目前對 100% 的 Insiders 和 25% 的穩定版使用者處於作用中狀態,但很快將被普遍採用。同時,您可以使用 pythonTestAdapter 設定選擇加入或退出。

使用引數執行檔案的偵錯工具組態

新的 Debugpy 擴充功能現在提供「具有引數的 Python 檔案launch.json 組態,當您想要為 Python 檔案提供不同的輸入值,而無需每次執行時都修改程式碼或偵錯工具組態時,此組態非常有用。

若要使用此組態,請確定您已安裝 Debugpy 擴充功能。按 ⇧⌘D (Windows、Linux Ctrl+Shift+D) 開啟「執行和偵錯」檢視,然後選取「建立 launch.json 檔案」或齒輪圖示以存取 launch.json 檔案。選取「Debugpy」,然後從可用的組態中選取「Python:具有引數的檔案」。

現在,當您想要偵錯 (F5) 需要命令列引數的 Python 檔案時,會出現提示,讓您輸入要傳遞至 Python 檔案的所需引數。

輸入引數後,按 Enter,偵錯工具將會啟動,讓您可以逐步執行程式碼。

佈景主題:Catppuccin Macchiato (在 vscode.dev 上預覽)

Python 擴充功能 API 的 npm 套件

Python 擴充功能現在提供 npm 套件,讓其他擴充功能作者更容易存取和追蹤 Python 擴充功能 API 中的變更。查看 @vscode/python-extension npm 模組,以使用使用者機器上可用的 Python 環境。

Python 擴充功能的開發容器

現在有一個適用於 Python 擴充功能的 開發容器,其中包含 Microsoft 官方 Node.js 映像。使用此 自訂開發容器,使用者能夠在 GitHub Codespace 中開啟 Python 擴充功能存放庫,並立即開始開發和測試 Python 擴充功能,無需安裝。Python 版本 3.7、3.8、3.9、3.10 和 3.11 已預先安裝,因此使用者可以使用 pyenv 輕鬆在 Python 版本之間切換。

Jupyter

連線到 Codespace 上的 Jupyter 伺服器

github.dev 上使用 Jupyter 筆記本時,您現在可以透過核心選取器連線到在 GitHub Codespace 執行個體上執行的 Jupyter 伺服器。

繼續在具有未提交變更的情況下進行

您可以選取筆記本工具列中的「繼續在...上進行」按鈕,切換到基礎程式碼空間,且工作區中的任何未提交變更都會帶到程式碼空間。

GitHub Pull Requests 和 Issues

GitHub Pull Requests 和 Issues 擴充功能上取得了更多進展,可讓您處理、建立和管理 pull request 和問題。在此迭代中,我們專注於更新「建立」檢視,使其更簡潔且更有用。

建立」檢視的改進包括

  • 檢視會嘗試偵測 PR 的最佳可能基礎分支,而不是永遠使用預設分支。
  • 您可以從「建立」檢視將檢閱者、受讓人、標籤和里程碑新增至您的 PR。
  • 依預設,會記住您上次的「建立選項」(例如,草稿或自動合併)。
  • 檢視效能快得多。
  • 您可以在發佈分支之前檢視差異。
  • 發佈分支後,您也可以檢視提交 (即將推出未發佈分支的功能)。

GitHub Pull Request and Issues extension Create view

檢閱擴充功能 0.70.0 版本的變更記錄,以了解其他重點。

GitHub 驗證

在登出時撤銷 GitHub OAuth 權杖

先前,當您在 VS Code 中登出 GitHub 帳戶時,它只會從秘密儲存區移除 OAuth 權杖。權杖仍然有效,並且能夠向 GitHub 的 API 發出請求。為了提高權杖管理的安全性,我們現在嘗試在後端刪除權杖,使權杖在登出後不再有效。

擴充功能撰寫

revealSetting 和 focusSearch 已新增至 IOpenSettingsActionOptions

擴充功能現在可以將 revealSetting 物件和 focusSearch 布林值傳遞到接受 IOpenSettingsActionOptions 引數的命令中,例如 workbench.action.openSettingsJson

例如,以下命令

vscode.commands.executeCommand('workbench.action.openSettingsJson', {
  revealSetting: { key: 'editor.renderWhitespace' }
});

開啟使用者設定 JSON 檔案,然後顯示 editor.renderWhitespace 設定 (如果存在)。

新的 TestController.invalidateTestResults 方法

測試擴充功能可以呼叫新的方法 TestController.invalidateTestResults,向使用者指示一個或多個測試的任何結果可能不再適用。例如,擴充功能可能會執行如下操作

onFileChange(uri => {
  // invalidate tests in a file when a file changes:
  testController.invalidateTestResults(getTestsInFile(uri));
});
onConfigurationChange(() => {
  // invalidate results for all tests:
  testController.invalidateTestResults();
});

網路 Proxy 的 Kerberos 驗證

使用 https Node.js 模組的擴充功能現在可以使用需要 Kerberos 驗證的網路 Proxy。本機需要設定 Kerberos,但擴充功能不需要執行任何動作即可使用此功能。

如果自動選取的服務主體名稱無法運作,使用者可以使用 http.proxyKerberosServicePrincipal 設定提供一個。

Kerberos Service Principal setting

QuickPickItem 中最終確定的圖示

QuickPickItem 中圖示的 API 已最終確定。您現在可以使用 iconPath 屬性在 QuickPickItem 中顯示圖示。

A quick pick with GitHub avatars as the item icons

工程

透過名稱混淆縮減 VS Code

最近的工程努力將 VS Code 出貨 JavaScript 的大小縮減了 20%。在 透過名稱混淆縮減 VS Code 部落格文章中,您可以了解 VS Code 工程師 Matt BiernerJohannes Rieken 如何研究識別碼名稱混淆以最佳化程式碼大小,並使用 TypeScript 提出有效的解決方案。

更多 pty 主機改進

延續 上個月對 pty 主機的改進,已進行以下改進

  • 效能
    • pty 主機現在僅在需要時啟動,因此從不開啟終端機的使用者將節省約 50-100 MB 的空間。
    • 進一步平行化終端機重新連線,加快初始化終端機的時間。
    • 終端機輸出訊息現在已緩衝,減少從 pty 主機和裝載終端機的視窗傳輸的流量。
  • 診斷
    • 當處於追蹤記錄層級時,會在每個處理序之間記錄延遲統計資料。
    • 視窗 ID 會記錄到「終端機」輸出通道中的所有記錄。
    • Pty 主機 RPC 記錄現在會記錄因例外狀況而失敗的回應。

重大修正

  • 133542 重新附加到錯誤的終端機
  • 168021 JavaScript 偵錯工具中更佳的物件完成項目
  • 184894 無法在終端機中按一下並拖曳捲軸

感謝您

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

問題追蹤

對我們問題追蹤的貢獻

提取請求

vscode 的貢獻

vscode-extension-samples 的貢獻

vscode-hexeditor 的貢獻

  • @lorsanta
    • 修正:按下 Home 鍵時捲動到頂端 PR #448
    • 修正:在索引標籤群組之間切換時,會更新選取計數。 PR #449

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

inno-updater 的貢獻

language-server-protocol 的貢獻

貢獻至 monaco-editor